Absturz bei definition von OWX Device (Firmata)

Begonnen von Audi_Coupe_S, 14 März 2018, 09:07:59

Vorheriges Thema - Nächstes Thema

Audi_Coupe_S

Hallo,

ich versuche, einen 1-Wire Bus über Firmata / Ethernet auf einem Arduino ans laufen zu bringen.

An Definitionen in Fhem habe ich folgendes vorgenommen:

define Arduino FRM 3030 global
attr Arduino room 700-DIVERSES
attr Arduino sampling-interval 30

define PINA8 FRM_AD 62
attr PINA8 IODev Arduino
attr PINA8 event-min-interval reading:10
attr PINA8 stateFormat reading

define PIND3 FRM_OUT 3
attr PIND3 IODev Arduino
attr PIND3 event-min-interval reading:10
attr PIND3 stateFormat reading

define PIND2 FRM_IN 2
attr PIND2 IODev Arduino
attr PIND2 event-min-interval reading:10
attr PIND2 stateFormat reading

Analogwerte einlesen und digitale I/O funktionieren problemlos.
Jetzt wollte ich ein Device für 1-Wire anlegen. Leider schmiert mir dabei Fhem immer ab.....

define Test OWX Arduino:5

Sobald ich das versuche, hängt Fhem sich weg.

Im Log erscheinen dann folgende Fehler:

2018.03.14 07:11:59 1: PERL WARNING: "my" variable $self masks earlier declaration in same scope at ./FHEM/11_OWX_FRM.pm line 125.
2018.03.14 07:11:59 1: PERL WARNING: "state" variable @_ masks earlier declaration in same scope at ./FHEM/11_OWX_FRM.pm line 125.
2018.03.14 07:11:59 1: PERL WARNING: "my" variable $hash masks earlier declaration in same scope at ./FHEM/11_OWX_FRM.pm line 126.
2018.03.14 07:11:59 1: PERL WARNING: "my" variable $self masks earlier declaration in same scope at ./FHEM/11_OWX_FRM.pm line 153.
2018.03.14 07:11:59 1: PERL WARNING: "state" variable @_ masks earlier declaration in same scope at ./FHEM/11_OWX_FRM.pm line 153.
2018.03.14 07:11:59 1: PERL WARNING: "my" variable $hash masks earlier declaration in same scope at ./FHEM/11_OWX_FRM.pm line 154.
2018.03.14 07:11:59 1: PERL WARNING: "my" variable $pin masks earlier declaration in same scope at ./FHEM/11_OWX_FRM.pm line 160.
2018.03.14 07:11:59 1: PERL WARNING: Bareword found where operator expected at ./FHEM/11_OWX_FRM.pm line 188, near "STARTING INIT"
2018.03.14 07:11:59 1: PERL WARNING:    (Do you need to predeclare STARTING?)
2018.03.14 07:11:59 1: PERL WARNING: Misplaced _ in number at ./FHEM/11_OWX_FRM.pm line 188.
2018.03.14 07:11:59 1: PERL WARNING: Bareword found where operator expected at ./FHEM/11_OWX_FRM.pm line 188, near "11_OWX_FRM"
2018.03.14 07:11:59 1: PERL WARNING:    (Missing operator before OWX_FRM?)
2018.03.14 07:11:59 1: PERL WARNING: String found where operator expected at ./FHEM/11_OWX_FRM.pm line 188, near "$msg = ""
2018.03.14 07:11:59 1: PERL WARNING:    (Missing semicolon on previous line?)
2018.03.14 07:11:59 1: PERL WARNING: String found where operator expected at ./FHEM/11_OWX_FRM.pm line 188, near "main::Log3 $name,1,""
2018.03.14 07:11:59 1: PERL WARNING: String found where operator expected at ./FHEM/11_OWX_FRM.pm line 188, near "if ( main::AttrVal($hash->{NAME},""
2018.03.14 07:11:59 1: PERL WARNING: String found where operator expected at ./FHEM/11_OWX_FRM.pm line 188, near "buspower",""
2018.03.14 07:11:59 1: PERL WARNING: String found where operator expected at ./FHEM/11_OWX_FRM.pm line 188, near "","") eq ""
2018.03.14 07:11:59 1: PERL WARNING:    (Missing operator before ") eq "?)
2018.03.14 07:11:59 1: PERL WARNING: Bareword found where operator expected at ./FHEM/11_OWX_FRM.pm line 188, near "") eq "parasitic"
2018.03.14 07:11:59 1: PERL WARNING:    (Missing operator before parasitic?)
2018.03.14 07:11:59 1: PERL WARNING: String found where operator expected at ./FHEM/11_OWX_FRM.pm line 188, near "$hash->{STATE}=""
2018.03.14 07:11:59 1: PERL WARNING: String found where operator expected at ./FHEM/11_OWX_FRM.pm line 188, near "main::InternalTimer(main::gettimeofday()+10, ""
2018.03.14 07:11:59 1: PERL WARNING: Bareword found where operator expected at ./FHEM/11_OWX_FRM.pm line 189, near "main::InternalTimer(main::gettimeofday()+10, "OWX_Discover"
  (Might be a runaway multi-line "" string starting on line 188)
2018.03.14 07:11:59 1: PERL WARNING: String found where operator expected at ./FHEM/11_OWX_FRM.pm line 189, near "my $res = ""
2018.03.14 07:11:59 1: PERL WARNING: String found where operator expected at ./FHEM/11_OWX_FRM.pm line 189, near "my @data = unpack ""
2018.03.14 07:11:59 1: PERL WARNING: String found where operator expected at ./FHEM/11_OWX_FRM.pm line 189, near "my $times = main::AttrVal($hash,""
2018.03.14 07:11:59 1: PERL WARNING: String found where operator expected at ./FHEM/11_OWX_FRM.pm line 189, near "main::OWX_WDBGL($name,5,""
syntax error at ./FHEM/11_OWX_FRM.pm line 62, near "}"
Global symbol "$class" requires explicit package name (did you forget to declare "my $class"?) at ./FHEM/11_OWX_FRM.pm line 62.
Can't use global @_ in "my" at ./FHEM/11_OWX_FRM.pm line 76, near "= @_"
Global symbol "$self" requires explicit package name (did you forget to declare "my $self"?) at ./FHEM/11_OWX_FRM.pm line 77.
syntax error at ./FHEM/11_OWX_FRM.pm line 114, near "}"
Can't use global @_ in "my" at ./FHEM/11_OWX_FRM.pm line 125, near "= @_"
syntax error at ./FHEM/11_OWX_FRM.pm line 142, near "}"
Can't use global @_ in "my" at ./FHEM/11_OWX_FRM.pm line 153, near "= @_"
syntax error at ./FHEM/11_OWX_FRM.pm line 179, near "}"
"no" not allowed in expression at ./FHEM/11_OWX_FRM.pm line 189, at end of line
./FHEM/11_OWX_FRM.pm has too many errors.
Compilation failed in require at ./FHEM/00_OWX.pm line 199.

Was mache ich falsch?
Ich habe sowohl im Commandref als auch im Forum schon sehr viel gelesen, aber ich komme leider nicht weiter.
Vielleicht kann mir hier jemand helfen.

Ein Update bringt "nothing to do", also sollten auch alle Module aktuell sein.

Vielen Dank schonmal,
Michael





Prof. Dr. Peter Henning


Audi_Coupe_S

#2
Wie finde ich das heraus?
Bei Abfrage von "Version" taucht das Modul nicht auf....

Audi_Coupe_S

In der Datei unter /opt/fhem/FHEM steht:

$Id: 11_OWX_FRM.pm 16362 2018-03-09 17:18:43Z phenning $

Tom Major

zur Fehlermeldung selbst kann ich leider nichts sagen, aber Du könntest mal alternativ OWX_ASYNC probieren. So was läuft bei mir seit Jahren mit 2 Sensoren an einem Pin sehr stabil:

# DS18X20 PA2 D26
define io_FRM1_OWBus_1 OWX_ASYNC 26
attr io_FRM1_OWBus_1 IODev FRM1
attr io_FRM1_OWBus_1 buspower real
# Temperatursensor 1
define io_FRM1_Temp_1 OWTHERM 10.C6BA0A020800 300
attr io_FRM1_Temp_1 IODev io_FRM1_OWBus_1
attr io_FRM1_Temp_1 model DS1820


(FRM1 wäre bei Dir Arduino)
Früher: FHEM 5.x
Jetzt: RaspberryMatic / ioBroker

Audi_Coupe_S

Hallo Tom Major,

vielen Dank, damit bekomme ich sofort einen Temperaturwert.

:)

Gruß
Michael

Prof. Dr. Peter Henning

 ::)Das mag ja sein.

Allerdings darf ich anmerken: OWX_ASYNC wird nicht weiterentwickelt, und die Unterstützung dafür fliegt aus den Frontendmodulen demnächst raus.

Ich rate, einfach die aktuelle Version von OWX_FRM zu verwenden.


pah




Audi_Coupe_S

AHA.

Und wie wäre die aktuelle Version, wo bekomme ich sie her und wie installiere ich sie?

Gruß
Michael

jensb

Hallo Michael,

"aktuelle" Modul-Versionen bekommst du, indem du "udpate" in die FHEM-Kommandozeile eintippst und am Ende "shutdown restart" sagst.

Um speziell OWX_FRM zu verwenden, musst du ein Device vom TYP OWX anlegen und in der Definition den Namen deines FRM-Devices und die Pin-Nr. deines 1-Wire-Anschlusses am Arduino angeben. Details stehen in der Commandref und der Wiki.

Grüße,
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

Audi_Coupe_S

Vielen Dank für die Antwort.

So einfach ist es aber leider nicht. Es werden mit "Update" scheinbar nur die geladenen Module auf den aktuellen Stand gebracht. Und da meines wegen des Syntax-Fehlers nicht geladen wurde, wurde es auch nicht auf den aktuellen Stand gebracht.

Inzwischen läuft es aber.

jensb

ZitatEs werden mit "Update" scheinbar nur die geladenen Module auf den aktuellen Stand gebracht.
Das stimmt so nicht ganz. Mit "Update" werden alle Module der offiziellen Distro aktualisiert. Man bekommt dadurch auch komplett neue Module zur Verfügung gestellt. Allerdings löst eine Update nicht immer bestehende Probleme.

Grüße,
Jens
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

Prof. Dr. Peter Henning

Wieso "nicht ganz" ?
ZitatEs werden mit "Update" scheinbar nur die geladenen Module auf den aktuellen Stand gebracht. Und da meines wegen des Syntax-Fehlers nicht geladen wurde, wurde es auch nicht auf den aktuellen Stand gebracht
Das ist einfach falsch.

pah

jensb

ZitatWieso "nicht ganz" ?
Wer FHEM Module aus anderen Quellen verwendet, bekommt mit "Update" dafür keine Updates. Auch für die Contrib-Module gibt es Sonderregeln, siehe hier.
FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb

Prof. Dr. Peter Henning

Logik, mein Lieber. Die Aussage bleibt trotzdem vollständig falsch, und eben nicht nur teilweise.

LG

pah

jensb

FHEM 6.1 - RPi 4 Raspbian 12 + PiTFT - OPi Zero Armbian 5.35
EnOcean - (W)LAN/Firmata: BMP180, TSL2561, SHT21, Heatronic 3, OBIS - WLAN/ESP8266: Gardena 1251, Zirkulationspumpe - RTL433: Oregon - Bluetooth - MQTT
Contributions: https://svn.fhem.de/trac/browser/trunk/fhem/contrib/jensb