Power consumption of weather station's external unit is very small. Though in the case of WH1050 it would require a pair of AA every couple of months. I was fed up climbing my shed couple times a year, almost always in the most unfortunate times and the worst weather conditions. Further, each time the external unit is restarted it requires re-pairing with the in-door unit (transmission ID is incremented). I decided to power it permanently. Running wires along the wall inside the shed to a wall-mart style PSU was not a problem, but it's efficiency - it would lose 70% - 80% of energy just for self-heating.
A solar panel powered rechargeable battery power would solve this problem. I purchased the cheapest 3.7V LiPo battery - most of them are of a flat shape purposed for a GPS/navigation systems. I oversized the battery and solar panel just for sake of safety - it turned out that even in case of nuclear war or weather catastrophe, my weather station would still run for 2 weeks of complete darkness ;) thanks to the sleep mode. WH1050 transmits its packets in intervals, and there is no point to wait idle with radio on in between. Puting atmega and RFM12b into sleep mode saves a lot of battery power.
The atmega used for the project is eavesdropping proprietary transmissions, and right after retransmits its decoded contents with JeeNode protocol. Using a stock RF12demo retransmitted frames can be gathered by a another node in the house, logged for analysis, etc: The longer frames below holds the entire telemetry of weather: temperature, humidity, wind speed and rain. The shorter frames, were added by my firmware to transmit additional information regarding electrical conditions: battery voltage, solar panel idle voltage and solar panel loaded voltage (during battery charging).
OKX GB2 195EF06133050B196279 OKX GB2 1948A9D94A0C OKX GB2 195EF06233050B196280 OKX GB2 1948ACD94A0C OKX GB2 1948ADD8BA0C OKX GB2 195EF06233050919620C OKX GB2 1948AAD83A0C OKX GB2 195EF06233070B196287 OKX GB2 1948ACD8CA0C OKX GB2 195EF06333090E1962AA
A shell script translates binary encoded frames into understandable telemetry:
Thu Jan 28 15:26:04 CET 2016 Temp 9.7 rHum 51 Wvel 1.70 Wmax 3.74 Rain 1949.4 Thu Jan 28 15:26:04 CET 2016 Sol 5.834 Idle 9.148 Bat 4.092 Thu Jan 28 15:26:52 CET 2016 Temp 9.8 rHum 51 Wvel 1.70 Wmax 3.74 Rain 1949.4 Thu Jan 28 15:26:52 CET 2016 Sol 5.842 Idle 9.148 Bat 4.092 Thu Jan 28 15:28:28 CET 2016 Sol 5.845 Idle 9.124 Bat 4.092 Thu Jan 28 15:29:16 CET 2016 Temp 9.8 rHum 51 Wvel 1.70 Wmax 3.06 Rain 1949.4 Thu Jan 28 15:29:16 CET 2016 Sol 5.837 Idle 9.103 Bat 4.092 Thu Jan 28 15:30:04 CET 2016 Temp 9.8 rHum 51 Wvel 2.38 Wmax 3.74 Rain 1949.4 Thu Jan 28 15:30:04 CET 2016 Sol 5.842 Idle 9.127 Bat 4.092 Thu Jan 28 15:30:52 CET 2016 Temp 9.9 rHum 51 Wvel 3.06 Wmax 4.76 Rain 1949.4
The central_node.sh script requires that the node connected to a host is flashed with RF12demo.ino sketch from JeeLabs, and configured for HEX output, just like above.