Jag börjar med resultatet,
Levande data, http://213.65.212.32:8080/dashboard/sna ... tYKepw43mj
Mitt projekt möjliggör alltså loggning av alla parametrar i en Nibe Fighter 1235 och troligen alla andra modeller som Nibes tillbehör RCU passar till.
Incitamentet för projektet kan man läsa här, https://elektronikforumet.com/forum/vie ... hp?t=94118
Principen är att en Arduino agerar RCU och skickar vidare insamlade parametrar till en MQTT-broker. Hårdvara
RJ45 Nätverkskabel
RS485 till RS232-modul (https://www.sparkfun.com/products/10124) som även finns att hitta på eBay. ESP-01 (Går lika bra andra ESP8266-moduler) Raspberry Pi Zero W (eller någon annan passande linuxplattform)
Mjukvara
MQTT-server (jag använder mosquitto, https://mosquitto.org/)
InfluxDB (databasen där jag sparar all data, https://www.influxdata.com/)
Grafana (Läser data från InfluxDB och presenterar fina grafer, https://grafana.com/)
Koden jag skrivit är implementerad i C i Arduino IDE. Jag har även lite kod skriven i python (glue_script/mqttToInfluxdb.py) för att få in mqtt-topics till influxdb. All kod finns här, https://bitbucket.org/foogadgets/bvptograf
ESP-01 agerar alltså som om den vore en Nibe RCU, och ACKar så fort RCUn adresseras. För att Styrkortet ska adressera RCUn behöver man aktivera detta i menyn 9.2.15. När ESPn ACKat skickar Styrkortet några få antal parametrar. ACKar man igen så skickar den fler parametrar osv. tills alla 97 parametrar är skickade. Sedan växlar styrkortet och “pratar” med andra adressater en stund, för att sedan återkomma till RCU:n igen.
Parameterlistan skickas väldigt ofta, och för att minska Wifi-trafiken skriver jag ner alla parametrar i en array, och skickar det som finns i arrayen med lite längre mellanrum. Just nu ungefär en gång var 30:e sekund.
Parametrarna skickas till en MQTT-broker. Det är första gången jag använder MQTT, och det är en mycket lättviktig och smidig lösning för att dirigera data.
En mqtt-broker har ingen databas utan är bara en förmedlare av data. För att kontinuerligt lagra data så har jag skrivit ett python-script där jag prenumererar på de parametrar jag är intresserad av att logga, och som skickas vidare till en Influx-databas. Att jag valde InfluxDB var för att jag gillade Grafana som i sin tur var lätt att integrera med InfluxDB.
Arduino-koden implementerar en öppen UDP-port (9898) där jag lyssnar efter inkommande paket med parametrar som ska sättas. Detta har jag än så länge inte fått att fungera. Tycker mig ha gjort enligt det som finns beskrivet på nätet och i SEF-tråden här i forumet, men jag får inte det svar jag förväntar mig från Styrkortet. Detta skulle kunna vara så enkelt som att 3,3V-nivån på modulkortet inte räcker till för att kommunicera med Styrkortet. Dock verkar det ju fungera att skicka ACK:ar så jag behöver titta lite närmare på detta.
Elektrisk beskrivning
Busenkelt. RJ45-porten på Nibe innehåller förutom RS485-signaler, även GND, 5V och 12V.
För att kunna koppla signalerna från Niben till ESPn behöver den differentiella signalen omvandlas till RS232 (0V-3,3V) då ESP-01 bara klarar 3,3V på GPIO-portar.
Eftersom Arduino-klonen ESP-01 inte har en spänningsstabilisator som omvandlar 5V till 3,3V så har jag använt en LM1117-3.3.
För att omvandla utsignalen från RS485-modulen använder jag en resistor och en Zenerdiod. På så sätt blir spänningsnivån in till ESP-01 aldrig över 3,3V. Det man behöver se upp med är så klart att man inte kortsluter någon av de ingående stiften i RJ45-kontakten och att polariteten på RS485 är rätt.
Konfigurering och installation
Konfigurera först rätt ip-adress, SSID, lösenord etc i Arduino-koden. Kompilera och ladda ner på ESPn-kortet.
Kod: Markera allt
const char* mqttServer = "192.168.1.3"; // Insert MQTT server IP
const int mqttPort = 1883;
const char* mqtt_user = "mqtt"; // MQTT user
const char* mqtt_pass = "mqtt"; // MQTT password
const char* mqtt_client_name = "Nibe1235";
const char* wifi_SSID = "SSID";
const char* wifi_PASSWD = "PASS";
Installera sedan MQTT, InfluxDB samt Grafana enligt någon guide på nätet. Det går att använda standardinställningar nästan rakt igenom.
Referenser
Min kod finns på Github, https://bitbucket.org/foogadgets/bvptograf
Inspirationstråd, https://elektronikforumet.com/forum/vie ... hp?t=13714
Parameterlista, https://www.nibe.hu/Pages/98176/RCU_Par ... 5_1235.pdf
Nibe RCU, http://www.nibeonline.com/pdf/031194-3.pdf
Raspbian, https://www.raspberrypi.org/downloads/raspbian/