HomeBrewWired - Diskussion zum Tutorial

Begonnen von Thorsten Pferdekaemper, 01 Dezember 2016, 22:03:19

Vorheriges Thema - Nächstes Thema

Thorsten Pferdekaemper

Hi,
das hier ist der versprochene Diskussions-Thread zum Tutorial (https://forum.fhem.de/index.php/topic,61780.0.html).
Gruß,
   Thorsten
FUIP

Papaloewe

Hallo Torsten,

zunächst einmal möchte ich mich für dein HomeBrewWired Tutorial bedanken.
Ich hatte das Thema zwar zur Kenntnis genommen, konnte aber bisher nicht so richtig etwas anfangen.

Ich versuche nun die von dir beschriebenen Schritte nachzuvollziehen.
Die HBW Arduino Libraries habe ich eingebunden, aber beim versuch den minimal Sketch zu kompilieren erscheint folgende Fehlermeldung:

Arduino: 1.6.5 (Linux), Platine: "Arduino Nano, ATmega328"

Build-Optionen wurden verändert, alles wird neu gebaut
Verwende die Bibliothek HBWSoftwareSerial im Ordner: /home/tom/Arduino/libraries/HBWSoftwareSerial (legacy)
Verwende die Bibliothek HBWired im Ordner: /home/tom/Arduino/libraries/HBWired (legacy)

/home/tom/arduino-1.6.5/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I/home/tom/arduino-1.6.5/hardware/arduino/avr/cores/arduino -I/home/tom/arduino-1.6.5/hardware/arduino/avr/variants/eightanaloginputs -I/home/tom/Arduino/libraries/HBWSoftwareSerial -I/home/tom/Arduino/libraries/HBWired /tmp/build697044926723096382.tmp/sketch_dec03a.cpp -o /tmp/build697044926723096382.tmp/sketch_dec03a.cpp.o
/home/tom/arduino-1.6.5/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I/home/tom/arduino-1.6.5/hardware/arduino/avr/cores/arduino -I/home/tom/arduino-1.6.5/hardware/arduino/avr/variants/eightanaloginputs -I/home/tom/Arduino/libraries/HBWSoftwareSerial -I/home/tom/Arduino/libraries/HBWired -I/home/tom/Arduino/libraries/HBWSoftwareSerial/utility /home/tom/Arduino/libraries/HBWSoftwareSerial/HBWSoftwareSerial.cpp -o /tmp/build697044926723096382.tmp/HBWSoftwareSerial/HBWSoftwareSerial.cpp.o
/home/tom/arduino-1.6.5/hardware/tools/avr/bin/avr-g++ -c -g -Os -w -fno-exceptions -ffunction-sections -fdata-sections -fno-threadsafe-statics -MMD -mmcu=atmega328p -DF_CPU=16000000L -DARDUINO=10605 -DARDUINO_AVR_NANO -DARDUINO_ARCH_AVR -I/home/tom/arduino-1.6.5/hardware/arduino/avr/cores/arduino -I/home/tom/arduino-1.6.5/hardware/arduino/avr/variants/eightanaloginputs -I/home/tom/Arduino/libraries/HBWSoftwareSerial -I/home/tom/Arduino/libraries/HBWired -I/home/tom/Arduino/libraries/HBWired/utility /home/tom/Arduino/libraries/HBWired/HBWired.cpp -o /tmp/build697044926723096382.tmp/HBWired/HBWired.cpp.o
/home/tom/Arduino/libraries/HBWired/HBWired.cpp:14:20: fatal error: EEPROM.h: No such file or directory
#include <EEPROM.h>
                    ^
compilation terminated.
Fehler beim Kompilieren.



Woran könnte das liegen?
Ardunino IDE Version 1.6.5 unter Ubuntu Linux.

Gruß Thomas

Thorsten Pferdekaemper

#2
Hi,
ich habe selbst die IDE 1.6.12 (auf Windows) und habe mir jetzt mal die Release Notes zwischen 1.6.5 und 1.6.12 betrachtet. Bei 1.6.7 steht dort...
Zitat
faster, better prototype generation and library discovery logic,
Vielleicht schlägt das hier zu.
Versuch mal im Haupt-Sketch die Zeile "#include <EEPROM.h>" vor dem #include "HBWSoftwareSerial.h" einzufügen. D.h. es müsste dann so aussehen:

#define HMW_DEVICETYPE 0xAB

#define HARDWARE_VERSION 0x01
#define FIRMWARE_VERSION 0x0100

#include <EEPROM.h>                   
#include "HBWSoftwareSerial.h"
#include "HBWired.h"

#define RS485_RXD 4   // Receive-Pin


EDIT: Vielleicht wird das sogar schon mit 1.6.6 unnötig. Dort steht nämlich:
Zitat
* Library to library dependencies: when your sketch imports a library, and that library uses another, the IDE will find out without you having to add a useless #include to your sketch

Gruß,
   Thorsten
FUIP

Papaloewe

ok, danke das wars:
ZitatVielleicht schlägt das hier zu.
Versuch mal im Haupt-Sketch die Zeile "#include <EEPROM.h>" vor dem #include "HBWSoftwareSerial.h"

Jetzt kann es für mich weiter gehen ;-)

Thorsten Pferdekaemper

Ok, danke. Ich hab's jetzt auch ins Tutorial eingefügt.
FUIP

justme1968

keine frage... aber ein vorschlag für ein device :)

ein counter der ein (oder mehrere) s0 stromzähler auswerten und in fhem zur verfügung stellen kann.

hintergrund: ich bin gerade dabei eine kleine unterverteilung für die keller lüftung und ein einer hand voll geschalteter steckdosen für den garten fertig zu machen.

da ich noch ein paar s0 zwischenzäher rum liegen habe die eigentlich für die einzelne zimmer vorgesehen waren, die aber nicht mehr in die etagenverteiler passen, kommt einer davon jetzt in den hm wired unterverteiler.

im keller ist zwar noch ein 1-wire counter mit einem freien eingang, der ist aber fast am anderen keller ende.

statt den zwischenzähler jetzt mit einem zusätzlichen 1-wire counter an fhem anzubinden sollte das doch eigentlich auch direkt und ohne 1-wire umweg mit einem homebrew wired sensor möglich sein. so etwas wie ein hbw-es-ep-dr?

vielleicht gibt es ja noch andere interessenten für so etwas.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Thorsten Pferdekaemper

Hi,
ok, wir können mal versuchen, darauf hinzuarbeiten. Allerdings habe ich keinen s0-Stromzähler und weiß auch nicht, was der so als Signal absondert oder wie er sich abfragen lässt. Könntest Du das erklären?
Gruß,
   Thorsten
FUIP

justme1968

#7
s0 ist eine standardisierte schnittstelle zur übertragung von verbrauchswerten. es gibt mindestens wasser, strom und gas zähler mit s0 schnittstelle.

ja nach zähler werden eine bestimme anzahl an impulsen pro kWh erzeugt. 1000 ist recht häufig.

das ganze lässt sich recht einfach per pin change interrupt auswerten.

bei echten 1-wire countern bleibt der zählerstand auch ohne strom für mindestens ein paar tage erhalten. die die avr basierten 1-wire counter emulationen bildern das über einen batterie oder supercup buffer nach. hast du eine idee wie man das bei der hbw version lösen kann?

gruss
  andre

ps: noch ein zwei links:

wikpedia s0: https://de.wikipedia.org/wiki/S0-Schnittstelle

ein arduino s0 zähler:https://forum.fhem.de/index.php/topic,19285.msg149324.html#msg149324, es gibt noch ein paar andere hier im forum und mindestens 2 avr basierte 1-wire emulationen
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Thorsten Pferdekaemper

Hi,

hier ist schon eine HBW-Implementierung für S0-Signale: https://github.com/kc-GitHub/HM485-Lib/tree/thorsten/HBW-Sen-EP
...allerdings passt die nicht zu den neuen Libraries und verwendet auch keinen Pin Change Interrupt. Das wäre natürlich besser.
Mal sehen, man müsste das ganze ja mit einem simplen Taster simulieren können.

Zum Zählerstand: Man kann den natürlich im EEPROM speichern, aber wie lange das EEPROM das mitmacht ist eine andere Sache. Vielleicht sollte man das eher auf der FHEM-Seite speichern und halt das HBW-Gerät immer nur sowas wie "Impulse seit dem letzten Reset" liefern lassen.
...oder man lässt den Arduino seine eigene Eingangsspannung überwachen und speichert dann ins EEPROM, wenn die Spannung zusammenbricht. Natürlich muss man dann noch die tatsächliche Spannungsversorgung über einen dicken Kondensator oder so puffern.

Gruß,
   Thorsten
FUIP

derHeimwerker

Hallo Thorsten,

eine super Tutorial ! Ich kann leider bisher aus Zeitgründen noch nicht "mitwerkeln". Aber total klasse beschrieben ! Freu mich auf die freie Weihnachtszeit.
Gruß
Thomas

Thorsten Pferdekaemper

Zitat von: derHeimwerker am 09 Dezember 2016, 07:46:46eine super Tutorial ! Ich kann leider bisher aus Zeitgründen noch nicht "mitwerkeln". Aber total klasse beschrieben ! Freu mich auf die freie Weihnachtszeit.
Danke!
Über Weihnachten werde ich selbst wahrscheinlich eher weniger Zeit haben. Es sollte aber reichen, um auf Fragen zu antworten.
Gruß,
   Thorsten
FUIP

justme1968

vielleicht komme ich über weihnachten dazu das ganze mal mit der neuen lib zu probieren.


die idee ist schon den zähler nur dann ins eeprom zu schreiben wenn es nötig ist. also überwachen der eigenen spannung wäre ideal. vielleicht hat ja jemand schon eine idee zur hardware.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Papaloewe

Ich kann auch erst in den Weihnachtsferien weitermachen.
Auch das Thema mit dem S0-Counter ist sehr interessant für mich.

Thorsten Pferdekaemper

Zitat von: justme1968 am 09 Dezember 2016, 10:18:41die idee ist schon den zähler nur dann ins eeprom zu schreiben wenn es nötig ist. also überwachen der eigenen spannung wäre ideal. vielleicht hat ja jemand schon eine idee zur hardware.
...oder sowas: https://www.adafruit.com/product/1897
Das scheint wesentlich stabiler als ein EEPROM zu sein.
Was auch eine Möglichkeit wäre: Wenn die Zentrale, auf der FHEM läuft, sowieso an einer USV hängt, dann da einfach den Arduino mit dranhängen. Wenn die USV dann alles runterfährt, dann einen Befehl an das HBW-Device schicken, um alles zu speichern.
...oder dem Arduino eine große SD-Karte spendieren und darauf schreiben.
Es gibt da schon einige Möglichkeiten.
Gruß,
   Thorsten
FUIP

justme1968

das schaut gut aus.

für den panstamp innenraum sensor hatten wir ein nvsram baustein vorgesehen. das funktioniert ähnlich. ist mir viel teurer.
fhem hängt zwar an einer usv, dir hmw unterverteilung aber nicht.

so autonom und stabil wie möglich sollte es sein.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968