Gå til innhold
  • Bli medlem
Støtt hjemmeautomasjon.no!

xibriz

VIP
  • Innlegg

    1 289
  • Ble med

  • Besøkte siden sist

  • Dager vunnet

    50

Alt skrevet av xibriz

  1. Der er det siste kortet jeg lagde, med din kretsdesign
  2. Klart. Jeg lagde det i Fritzing, så jeg legger ved filen her. Den inneholder breadboard, skjema og PCB. AMS2.fzz
  3. Det ble hell i uhell med den USBen
  4. Siden jeg ikke er like rask som @roarfred tok dette litt lenger tid enn jeg hadde tenkt, men nå er endelig dingsen min på plass Har bommet på hvilken vei USBen skal stå på kretskortet, også må jeg finne meg en lader som er vinkle en annen vei, men ellers fungerer alt som det skal
  5. xibriz

    Alexa mods

    Dette er den kuleste modden jeg har sett til nå ?
      • 5
      • Haha
  6. Det er flott å få alternativer Personlig tenker jeg at denne typer målere blir ett supplement til AMS fordi da kan man måle hver enkelt kurs i tillegg til å vite hva selve "hovedenheten" mener. Man bruke AMS til å bare hente ut nøyaktig spenning hvis man vil uten å koble på noen ekstra voltmeterløsning.
  7. Kanskje noen tar ansvar å lager en egen tråd for den typer bokser? IoTaWatt, EmonTx, homebrew løsninger osv.
  8. Enig med @Odd Hvis man har tilgang til en fysisk nøkkel er det minst like lett å kopiere den. Folk har tilogmed kopiert fysiske nøkler ut fra bilder! Det kan man ikke med en nøkkelbrikke. Og nøkkelbrikken sperrer jeg på mobilen mens jeg sitter på stranden i Spania til en kostnad av 0 kr.. vet ikke hva en låsesmed tar, men det er nok litt mer
  9. Dette er hovedårsaken til at jeg migrerte helt ut av Telldus-systemet når min boks fikk en "kræsj" og det var ingen mulighet for restore verken av meg eller "skyen" uten å legge inn alt på nytt manuelt.
  10. Meget godt jobbet @roarfred
  11. Jeg kjører orginale stømforsyninger på alle mine Rpi. For flere år siden oppdaget vi på jobb at Rpi gikk i en slags "power saving mode" hvis den ikke hadde kraftig nok strømforsyning. De offesielle specs er:
  12. Jeg fikk også mine kort i går, men jeg er ikke i nærheten så rask som @roarfred
  13. Mangler en modul øverst. Jeg har 30-50m kabel på min nå.
  14. Enderlig 5 GHz WiFi
  15. Det er litt vanskelig og trekke konklusjoner fra strømregningen. I Januar gjorde jeg som jeg bruker. Fra ca. midt i Februar begynte jeg å lade elbilen på natten i stedet for rett etter jobb. Januar: 3029 kWh (39,82 øre/kWh) Nordpool gjennomsnitt for Januar: 30,00 øre/kWh Februar: 3190 kWh (33,40 øre/kWh) Nordpool gjennomsnitt for Februar: 36,14 øre/kWh Det kan se ut som at gjennomsnittsprisen er høyere i Februar kontra Januar på Nordpool, mens jeg har klart å oppnå en lavere gjennomsnittspris hjemme ved å endre tidspunktet på å lade elbilen
  16. ? Jeg var sikker på at jeg hadde prøvd å sette debugPort til NULL, og da skulle ikke debugPrint kjørt.. så det er litt rart hvis jeg hadde problemer med det. Men det kan jo hende at jeg bare har tenkt på saken uten å faktisk gjort det. Får kaste mer kode inn på ESPen å se hva som skjer.
  17. Joda.. RX fra HAN og TX inn på PCen
  18. Koblet ut debugPrint-funksjonen og da ser det stabilt ut... jeg er sikker på at jeg prøvde å sette debugPort til NULL tidligere uten at det funket... får forske litt til. Det er deilig å sitte inne i 24 grader kontra ute i 5 minus Kanskje derfor jeg finner ut av ting her
  19. Noen ganger går det igjennom:
  20. Nå kan jeg faktisk ikke fjerne mer kode... ? /* * Simple sketch to simulate reading data from a Kamstrup * AMS Meter. * * Created 12. March 2018 by Ruben Andreassen */ #include <HanReader.h> #include <Kamstrup.h> // The HAN Port reader HanReader hanReader; void setup() { // initialize the HanReader // (passing no han port, as we are feeding data manually, but provide Serial for debugging) hanReader.setup(&Serial, 2400, SERIAL_8N1, &Serial); } void loop() { // Read one byte from the port, and see if we got a full package if (hanReader.read()) { // Get the list identifier int listSize = hanReader.getListSize(); // Only care for the ACtive Power Imported, which is found in the first list if (listSize == (int)Kamstrup::List1 || listSize == (int)Kamstrup::List2) { Serial.println(hanReader.getInt((int)Kamstrup_List1::ActiveImportPower)); } } }
  21. Jeg har prøvd å kommentere bort alt bortsett fra en publish uten hell. Skal prøve å patche om litt i kveld så jeg kan sitte inne å holde på, blir litt lettere da men jeg holder fortatt en finger på at feilen ligger i hanreader.cpp
  22. Her er den eksakte kopien @roarfred Den trenger en overhaling med tanke på gjentagende kode, men har kjørt problemfritt siden november /* * Simple sketch to simulate reading data from a Kamstrup * AMS Meter. * * Created 10. November 2017 by Ruben Andreassen */ #include <ESP8266WiFi.h> #include <PubSubClient.h> #include <HanReader.h> #include <Kamstrup.h> // The HAN Port reader HanReader hanReader; const char* device_name = "espams"; // WiFi and MQTT endpoints const char* ssid = ""; const char* password = ""; const char* mqtt_server = "192.168.1.125"; const char* mqtt_topic = "esp/ams"; const char* mqtt_topic_PackageTime = "esp/ams/packagetime"; const char* mqtt_topic_ListSize = "esp/ams/listsize"; const char* mqtt_topic_ListVersionIdentifier = "esp/ams/listversionidentifier"; const char* mqtt_topic_MeterID = "esp/ams/meterid"; const char* mqtt_topic_MeterType = "esp/ams/metertype"; const char* mqtt_topic_ActiveImportPower = "esp/ams/activeimportpower"; const char* mqtt_topic_ActiveExportPower = "esp/ams/activeExportpower"; const char* mqtt_topic_ReactiveImportPower = "esp/ams/reactiveimportpower"; const char* mqtt_topic_ReactiveExportPower = "esp/ams/reactiveexportpower"; const char* mqtt_topic_CurrentL1 = "esp/ams/currentl1"; const char* mqtt_topic_CurrentL2 = "esp/ams/currentl2"; const char* mqtt_topic_CurrentL3 = "esp/ams/currentl3"; const char* mqtt_topic_VoltageL1 = "esp/ams/voltagel1"; const char* mqtt_topic_VoltageL2 = "esp/ams/voltagel2"; const char* mqtt_topic_VoltageL3 = "esp/ams/voltagel3"; const char* mqtt_topic_MeterClock = "esp/ams/meterclock"; const char* mqtt_topic_CumulativeActiveImportEnergy = "esp/ams/cumulativeactiveimportenergy"; const char* mqtt_topic_CumulativeActiveExportEnergy = "esp/ams/cumulativeactiveexportenergy"; const char* mqtt_topic_CumulativeReactiveImportEnergy = "esp/ams/cumulativereactiveimportenergy"; const char* mqtt_topic_CumulativeReactiveExportEnergy = "esp/ams/cumulativereactiveexportenergy"; String last_PackageTime = ""; String last_ListVersionIdentifier = ""; String last_MeterID = ""; String last_MeterType = ""; String last_ActiveImportPower = ""; String last_ActiveExportPower = ""; String last_ReactiveImportPower = ""; String last_ReactiveExportPower = ""; String last_CurrentL1 = ""; String last_CurrentL2 = ""; String last_CurrentL3 = ""; String last_VoltageL1 = ""; String last_VoltageL2 = ""; String last_VoltageL3 = ""; WiFiClient espClient; PubSubClient client(espClient); void setup() { setupWiFi(); setupMqtt(); // initialize the HanReader // (passing no han port, as we are feeding data manually, but provide Serial for debugging) hanReader.setup(&Serial, 2400, SERIAL_8N1, &Serial); } void setupMqtt() { client.setServer(mqtt_server, 1883); } void setupWiFi() { WiFi.mode(WIFI_STA); WiFi.begin(ssid, password); while (WiFi.status() != WL_CONNECTED) { delay(500); } } void loop() { loopMqtt(); // Read one byte from the port, and see if we got a full package if (hanReader.read()) { // Get the list identifier int listSize = hanReader.getListSize(); // Only care for the ACtive Power Imported, which is found in the first list if (listSize == (int)Kamstrup::List1 || listSize == (int)Kamstrup::List2) { //Publish uptime to let the world know i'm alive client.publish(mqtt_topic, ((String)millis()).c_str()); String current_ListVersionIdentifier = hanReader.getString((int)Kamstrup_List1::ListVersionIdentifier); if (current_ListVersionIdentifier != last_ListVersionIdentifier || listSize == (int)Kamstrup::List2) { client.publish(mqtt_topic_ListVersionIdentifier, current_ListVersionIdentifier.c_str()); last_ListVersionIdentifier = current_ListVersionIdentifier; } String current_MeterID = hanReader.getString((int)Kamstrup_List1::MeterID); if (current_MeterID != last_MeterID || listSize == (int)Kamstrup::List2) { client.publish(mqtt_topic_MeterID, current_MeterID.c_str()); last_MeterID = current_MeterID; } String current_MeterType = hanReader.getString((int)Kamstrup_List1::MeterType); if (current_MeterType != last_MeterType || listSize == (int)Kamstrup::List2) { client.publish(mqtt_topic_MeterType, current_MeterType.c_str()); last_MeterType = current_MeterType; } String current_PackageTime = ((String)hanReader.getPackageTime()); if (current_PackageTime != last_PackageTime || listSize == (int)Kamstrup::List2) { client.publish(mqtt_topic_PackageTime, current_PackageTime.c_str()); last_PackageTime = current_PackageTime; } String current_ActiveImportPower = (String)hanReader.getInt((int)Kamstrup_List1::ActiveImportPower); if (current_ActiveImportPower != last_ActiveImportPower || listSize == (int)Kamstrup::List2) { client.publish(mqtt_topic_ActiveImportPower, current_ActiveImportPower.c_str()); last_ActiveImportPower = current_ActiveImportPower; } String current_ActiveExportPower = (String)hanReader.getInt((int)Kamstrup_List1::ActiveExportPower); if (current_ActiveExportPower != last_ActiveExportPower || listSize == (int)Kamstrup::List2) { client.publish(mqtt_topic_ActiveExportPower, current_ActiveExportPower.c_str()); last_ActiveExportPower = current_ActiveExportPower; } String current_ReactiveImportPower = (String)hanReader.getInt((int)Kamstrup_List1::ReactiveImportPower); if (current_ReactiveImportPower != last_ReactiveImportPower || listSize == (int)Kamstrup::List2) { client.publish(mqtt_topic_ReactiveImportPower, current_ReactiveImportPower.c_str()); last_ReactiveImportPower = current_ReactiveImportPower; } String current_ReactiveExportPower = (String)hanReader.getInt((int)Kamstrup_List1::ReactiveExportPower); if (current_ReactiveExportPower != last_ReactiveExportPower || listSize == (int)Kamstrup::List2) { client.publish(mqtt_topic_ReactiveExportPower, current_ReactiveExportPower.c_str()); last_ReactiveExportPower = current_ReactiveExportPower; } String current_CurrentL1 = (String)((float)hanReader.getInt((int)Kamstrup_List1::CurrentL1) / 100.0); if (current_CurrentL1 != last_CurrentL1 || listSize == (int)Kamstrup::List2) { client.publish(mqtt_topic_CurrentL1, current_CurrentL1.c_str()); last_CurrentL1 = current_CurrentL1; } String current_CurrentL2 = (String)((float)hanReader.getInt((int)Kamstrup_List1::CurrentL1) / 100.0); if (current_CurrentL2 != last_CurrentL2 || listSize == (int)Kamstrup::List2) { client.publish(mqtt_topic_CurrentL2, current_CurrentL2.c_str()); last_CurrentL2 = current_CurrentL2; } String current_CurrentL3 = (String)((float)hanReader.getInt((int)Kamstrup_List1::CurrentL3) / 100.0); if (current_CurrentL3 != last_CurrentL3 || listSize == (int)Kamstrup::List2) { client.publish(mqtt_topic_CurrentL3, current_CurrentL3.c_str()); last_CurrentL3 = current_CurrentL3; } String current_VoltageL1 = (String)(hanReader.getInt((int)Kamstrup_List1::VoltageL1)); if (current_VoltageL1 != last_VoltageL1 || listSize == (int)Kamstrup::List2) { client.publish(mqtt_topic_VoltageL1, current_VoltageL1.c_str()); last_VoltageL1 = current_VoltageL1; } String current_VoltageL2 = (String)(hanReader.getInt((int)Kamstrup_List1::VoltageL2)); if (current_VoltageL2 != last_VoltageL2 || listSize == (int)Kamstrup::List2) { client.publish(mqtt_topic_VoltageL2, current_VoltageL2.c_str()); last_VoltageL2 = current_VoltageL2; } String current_VoltageL3 = (String)(hanReader.getInt((int)Kamstrup_List1::VoltageL3)); if (current_VoltageL3 != last_VoltageL3 || listSize == (int)Kamstrup::List2) { client.publish(mqtt_topic_VoltageL3, current_VoltageL3.c_str()); last_VoltageL3 = current_VoltageL3; } if (listSize == (int)Kamstrup::List2) { client.publish(mqtt_topic_MeterClock, ((String)hanReader.getTime((int)Kamstrup_List2::MeterClock)).c_str()); client.publish(mqtt_topic_CumulativeActiveImportEnergy, ((String)hanReader.getInt((int)Kamstrup_List2::CumulativeActiveImportEnergy)).c_str()); client.publish(mqtt_topic_CumulativeActiveExportEnergy, ((String)hanReader.getInt((int)Kamstrup_List2::CumulativeActiveExportEnergy)).c_str()); client.publish(mqtt_topic_CumulativeReactiveImportEnergy, ((String)hanReader.getInt((int)Kamstrup_List2::CumulativeReactiveImportEnergy)).c_str()); client.publish(mqtt_topic_CumulativeReactiveExportEnergy, ((String)hanReader.getInt((int)Kamstrup_List2::CumulativeReactiveExportEnergy)).c_str()); } } } } // Ensure the MQTT lirary gets some attention too void loopMqtt() { if (!client.connected()) { reconnectMqtt(); } client.loop(); } void reconnectMqtt() { // Loop until we're reconnected while (!client.connected()) { // Attempt to connect if (client.connect("ESP8266Client")) { // Once connected, publish an announcement... // client.publish("sensors", "hello world"); // ... and resubscribe // client.subscribe("inTopic"); } else { // Wait 5 seconds before retrying delay(5000); } } }
  23. Det er litt merkelig fordi jeg fikk problemer med "orginalkoden" min, som var den jeg allitd har kjørt. Den eneste forskjellen er oppdateringen i HAN-biblioteket.
  24. Jeg kan prøve å fjerne noen mqtt publish å se om det hjelper.
  25. Da har jeg gode å dårlige nyheter @roarfred Koden parser dataene fra måleren min riktig Men det er kun en gang koden klarer å lese inn hele datastrømmen fra måleren rett etter oppstart. Resten av tiden blir innlesingen avbrutt av feilmeldingen "Soft WDT reset". Noen treff på google peker på at det kan være for dårlig strømforsyning, men jeg bruker den jeg har brukt hele tiden i dette prosjektet (12v 2A), men jeg prøvde en kraftigere på 12v 3A uten noen forskjell. Lurer på hva det kan være....
×
×
  • Opprett ny...

Viktig informasjon

Vi har plassert informasjonskapsler/cookies på din enhet for å gjøre denne siden bedre. Du kan justere dine innstillinger for informasjonskapsler, ellers vil vi anta at dette er ok for deg.