Fórum | MyPower.CZ | Obnovitelné zdroje energie - energetická soběstačnost | Právě je stř lis 21, 2018 8:29 am


Arduino - open energy monitor

Automatizace, řízení, měření, logování a programování s využitím platformy Arduino.

Arduino - open energy monitor

Příspěvekod kodl69 » stř říj 07, 2015 6:51 pm

Po naťuknutí z fóra se snažím zprovoznit open energy moinitor - měření celkem v pořádku, jenom mám problémy s přenosem dat mezi RFM69CW - komunikace v pořádku, pokud odesílám hodnoty do proměnných "napsané" ručně, tak taky v pořádku, ale pokud posílám naměřené a arduinem vypočtené hodnoty, tak to píše nesmysly. Už nevím co s tím. V emonu mám nahrané: https://github.com/openenergymonitor/emonTxFirmware/blob/master/emonTxV3/RFM/emonTxV3.4/emonTxV3_4_3Phase_Voltage/emonTxV3_4_3Phase_Voltage.ino
v druhém arduinu co je jako gatevay mám sketch, co jenom zobrazí data na sériový port, https://github.com/openenergymonitor/NanodeRF/blob/master/Guide/b_MultiNode/b_MultiNode.ino
samozřejmě mám nastaveny parametry co patří, jinak nechodilo nic. Dokonce jsem po bezesné noci vylaboroval, že vstup D2 arduina je nutno zatížit rezistorem 2k2 proti zemi, jinak se na něm indukují chybné signály přerušení a data nechodí vůbec.
Vyzkoušel jsem příklady z knihovny RFM 69 https://github.com/LowPowerLab/RFM69/blob/master/Examples/Node/Node.ino to všechno funguje dobře.
Mám podezření, že chyba vzniká, když se hodnota proměnné typu "double" ukládá do "int" kvůli naplnění bufferu k odeslání dat, ale nějak nevím co s tím. Odesílám např 23920 a přijímám 30975, pokud ale zadám hodnotu proměnné ručně, tak je přenos v pořádku, asi to má nějakou souvislost s datovými typy, ale internet mlčí nebo odpovídá jako pracovník microsoftu (správně, ale informace je k ničemu).
Prosím o tipy, jak to řešit.
ostrov 4600Wp neustále ve stádiu zrodu: 6x noark CHSM6610P250, 6x250Wp z I4wifi, 6xTratek 275Wp, 4x auria 120Wp, midnite classic 150 lite+whizbang jr., 16S a různě P cca 300Ah Winston, Powerjack 8kW (reálně 6kW po úpravě). 48V DC rozvody a spotřebiče.
kodl69
 
Příspěvky: 2892
Registrován: sob črc 19, 2014 7:56 pm
Reputation: 194

Re: Arduino - open energy monitor

Příspěvekod rottenkiwi » stř říj 07, 2015 7:59 pm

Odkial si to 2. arduino berie dlzku buffra ? Je spravna ?
Only God & bank can create something from nothing. LTC: LX4UmmYHzT293zcJJ4BjTcPTRSHoLWLDn7
Vodík LiFePO charge BMS SEI formation Float IBM Quantum Enphase IQ7x 787 Dreamliner Issue Ako žiť eko Izolácia
Uživatelský avatar
rottenkiwi
 
Příspěvky: 1821
Registrován: pát úno 13, 2015 2:24 pm
Bydliště: SO, SK
Reputation: 69

Re: Arduino - open energy monitor

Příspěvekod kodl69 » stř říj 07, 2015 8:31 pm

délka se posílá jako součást paketu, vyčítá se to z knihovny co je k tomu rfm69 (rfm 12), to je určitě správně, rádio si kontroluje CRC a pokud nesedí, tak se ta zpráva zahodí.
Spíš bude problém v typu proměnných, to co se vypočítá je double (v arduinu uno float) a pak se z toho dělá integer do proměnné typu struct, protože když zadám ty hodnoty do vstupního bufferu (proměnná struct obsahující int) "natvrdo", je to ok., přijde to co má. v emontx_3phase... jsou proměnné double def. na ř. 215 a dál, struct na 239, a je nazvaná emontx , na 335 a dál je proměnná naplněná, když si to dám vypsat na serial, vypadá to ok, ale chodí to jenom když přímo zadám hodnoty číselně. Prostě potřebuju nějak korektně ten double nebo float převést na int, a je hotovo. Je zajímavý, že to je na githubu, a ostatním to asi chodí, jinak to nechápu, mám IDE 1.6.5, tak nevím, kde by mohla být chyba, snad už jenom v tom IDE
ostrov 4600Wp neustále ve stádiu zrodu: 6x noark CHSM6610P250, 6x250Wp z I4wifi, 6xTratek 275Wp, 4x auria 120Wp, midnite classic 150 lite+whizbang jr., 16S a různě P cca 300Ah Winston, Powerjack 8kW (reálně 6kW po úpravě). 48V DC rozvody a spotřebiče.
kodl69
 
Příspěvky: 2892
Registrován: sob črc 19, 2014 7:56 pm
Reputation: 194

Re: Arduino - open energy monitor

Příspěvekod rottenkiwi » stř říj 07, 2015 9:46 pm

Tak potom tam treba na riadky 335 až 339 pridať:

emontx.power1 = (int) realPower1;
.
.
.
Only God & bank can create something from nothing. LTC: LX4UmmYHzT293zcJJ4BjTcPTRSHoLWLDn7
Vodík LiFePO charge BMS SEI formation Float IBM Quantum Enphase IQ7x 787 Dreamliner Issue Ako žiť eko Izolácia
Uživatelský avatar
rottenkiwi
 
Příspěvky: 1821
Registrován: pát úno 13, 2015 2:24 pm
Bydliště: SO, SK
Reputation: 69

Re: Arduino - open energy monitor

Příspěvekod kodl69 » stř říj 07, 2015 10:20 pm

to už jsem taky zkoušel, dokonce jsem zkusil i další meziproměnnou s přetypováním, a pořád je výsledek např. 3170 místo 2398. Pokud do té proměnné uložím přímo tohle číslo, je to ok, tak už nevím. Jestli není chyba to přetypování na straně příjmu: int num = ((unsigned char)rf12_data[i+1] << 8 | (unsigned char)rf12_data[i]);
Nejhorší je, že jsem zkoušel i jiný knihovny (RFM69 od lowpowerlab), jejich příklad se vstupem analog. hodnoty jako int šlape ok, a když jsem to narouboval do emonitoru, tak to zas bylo blbě přenesený. Prostě z jednoduché věci se stává drama.
ostrov 4600Wp neustále ve stádiu zrodu: 6x noark CHSM6610P250, 6x250Wp z I4wifi, 6xTratek 275Wp, 4x auria 120Wp, midnite classic 150 lite+whizbang jr., 16S a různě P cca 300Ah Winston, Powerjack 8kW (reálně 6kW po úpravě). 48V DC rozvody a spotřebiče.
kodl69
 
Příspěvky: 2892
Registrován: sob črc 19, 2014 7:56 pm
Reputation: 194

Re: Arduino - open energy monitor

Příspěvekod kodl69 » pát říj 09, 2015 6:12 pm

takže pro případné další uživatele open energy monitoru: vysílací strana s RFM 69, pokud se sketch kompiluje a nahrává z
IDE v.1.06, tak všechno funguje správně. Trochu alchymie....
ostrov 4600Wp neustále ve stádiu zrodu: 6x noark CHSM6610P250, 6x250Wp z I4wifi, 6xTratek 275Wp, 4x auria 120Wp, midnite classic 150 lite+whizbang jr., 16S a různě P cca 300Ah Winston, Powerjack 8kW (reálně 6kW po úpravě). 48V DC rozvody a spotřebiče.
kodl69
 
Příspěvky: 2892
Registrován: sob črc 19, 2014 7:56 pm
Reputation: 194


Zpět na Arduino

Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 1 návštěvník

Reputation System ©'