FHEM Forum

FHEM => Automatisierung => Thema gestartet von: LeonLeckstrom am 06 Oktober 2015, 09:09:25

Titel: Firmata-Eingang zyklisch abfragen
Beitrag von: LeonLeckstrom am 06 Oktober 2015, 09:09:25
Hallo,

Ich benutze Firmata auf einem Arduino Due, angeschlossen via USB an ein RPI. Am Arduino lese ich 4 digitale Eingänge. Mein Problem ist, dass diese nur dann ein Log erzeugen, wenn sich das reading verändert. Ich habe es schon mit einem at versucht, aber bei mir funktioniert der befehl "get xxx reading" nicht. auch ein sampling-intervall bringt nichts. welche Möglichkeiten habe ich, alle 1 min die Eingänge abzufragen, so dass sie auch ein eintrag in ihrem Log erzeugen?

Hoffentlich kann mir jemand helfen. Danke im vorraus!  ;)


define FIRMATA FRM /dev/serial/by-id/usb-Arduino__www.arduino.cc__Arduino_Due_Prog._Port_85235353037351A05091-if00@57600
attr FIRMATA sampling-interval 1000

define Uebersicht FLOORPLAN
attr Uebersicht alias Übersicht
attr Uebersicht fp_arrange 0
attr Uebersicht fp_noMenu 1

define Licht_Halle_1 FRM_IN 5
attr Licht_Halle_1 IODev FIRMATA
attr Licht_Halle_1 alias Licht Halle 1
attr Licht_Halle_1 fp_Uebersicht 190,280,1,
attr Licht_Halle_1 group Beleuchtung
attr Licht_Halle_1 room Beleuchtung
attr Licht_Halle_1 stateFormat reading

define Licht_Alter_Eingang FRM_IN 6
attr Licht_Alter_Eingang IODev FIRMATA
attr Licht_Alter_Eingang alias Licht Alter Eingang
attr Licht_Alter_Eingang fp_Uebersicht 190,60,1,
attr Licht_Alter_Eingang group Beleuchtung
attr Licht_Alter_Eingang room Beleuchtung
attr Licht_Alter_Eingang stateFormat reading

define Licht_Tresenbereich FRM_IN 7
attr Licht_Tresenbereich IODev FIRMATA
attr Licht_Tresenbereich alias Licht Tresenbereich
attr Licht_Tresenbereich fp_Uebersicht 190,500,1,
attr Licht_Tresenbereich group Beleuchtung
attr Licht_Tresenbereich room Beleuchtung
attr Licht_Tresenbereich stateFormat reading

define Aussenbeleuchtung FRM_IN 8
attr Aussenbeleuchtung IODev FIRMATA
attr Aussenbeleuchtung alias Aussenbeleuchtung
attr Aussenbeleuchtung fp_Uebersicht 190,720,1,
attr Aussenbeleuchtung group Beleuchtung
attr Aussenbeleuchtung room Beleuchtung
attr Aussenbeleuchtung stateFormat reading

define Log_Licht_Halle1 FileLog ./log/Halle_1-%Y-%m.log Licht_Halle_1

define Log_Licht_Alter_Eingang FileLog ./log/Alter_Eingang-%Y-%m.log Licht_Alter_Eingang

define Log_Licht_Tresenbereich FileLog ./log/Tresenbereich-%Y-%m.log Licht_Tresenbereich

define Log_Aussenbeleuchtung FileLog ./log/Aussenbeleuchtung-%Y-%m.log Aussenbeleuchtung

define SVG_Log_Licht_Halle1_1 SVG Log_Licht_Halle1:SVG_Log_Licht_Halle1_1:CURRENT
attr SVG_Log_Licht_Halle1_1 alias Licht Halle 1
attr SVG_Log_Licht_Halle1_1 fp_Uebersicht 267,59,1,,

define SVG_Log_Licht_Tresenbereich_1 SVG Log_Licht_Tresenbereich:SVG_Log_Licht_Tresenbereich_1:CURRENT
attr SVG_Log_Licht_Tresenbereich_1 alias Licht Tresenbereich
attr SVG_Log_Licht_Tresenbereich_1 fp_Uebersicht 491,59,1,,
Titel: Antw:Firmata-Eingang zyklisch abfragen
Beitrag von: Wzut am 06 Oktober 2015, 16:05:35
und warum bitte schön willst du einen Eintrag haben wenn sich der Zustand gar nicht geändert hat ?
Die meisten Leute sind froh wenn ihre Logs nicht sinnlos zugemüllt werden.

Edit : sehe gerade du hast Plots definiert, wenn es dir darum geht das der Plot nicht abbricht :
commandref -> logProxy ist dein Freund :)
Titel: Antw:Firmata-Eingang zyklisch abfragen
Beitrag von: LeonLeckstrom am 06 Oktober 2015, 18:51:25
Richtig, mir geht es um die logs.  :)
Sieht nämlich blöd aus, wenn seit Stunden keine Veränderung angezeigt wird.

Ich bin ein bisschen weiter, anscheinend funktioniert Sampling-intervall nicht. Früher war das so, dass wenn ich das Attribut gesetzt hatte (bspw. 1000) das die Led am Arduino sekündlich blinkte. Das ist jetzt nicht mehr so.

Ich probiere das Logproxy mal und berichte dann.

Danke für die Antwort!
Titel: Antw:Firmata-Eingang zyklisch abfragen
Beitrag von: LeonLeckstrom am 07 Oktober 2015, 09:21:22
So, ich habe jetzt mal 2 Sachen probiert.

1. Logproxy
Ich verstehe nicht, wie die Funktion aussehen muss! kann mir das bitte jemand erklären?

2. addLog

define addLog at +*00:01:00 {addLog("Licht_Tresenbereich","reading")}


AddLog macht definitiv etwas, löst aber kein reading aus. ist mein befehl falsch? Was ich nicht verstehe ist, dass ich auch mit "get xxx reading" nichts bekomme! Fehlen FHEM vielleicht bestimmte Berechtigungen?

HILFE!  :)
Titel: Antw:Firmata-Eingang zyklisch abfragen
Beitrag von: LeonLeckstrom am 03 November 2015, 11:23:33
So, ich versuche mal diesen Thread wieder aufleben zu lassen.

Ich habe nach wie vor das Problem, dass mein Plot nicht kontinuierlich mitgeschrieben wird, sondern nur bei Veränderungen. Ich würde gerne eine logproxy oder dblog Funktion nutzen, weiß aber nicht wie die aussehen muss. kann mir jemand helfen?

Leon
Titel: Antw:Firmata-Eingang zyklisch abfragen
Beitrag von: Wzut am 03 November 2015, 13:31:07
Zitat von: LeonLeckstrom am 07 Oktober 2015, 09:21:22

define addLog at +*00:01:00 {addLog("Licht_Tresenbereich","reading")}


AddLog macht definitiv etwas, löst aber kein reading aus. ist mein befehl falsch?
Dein define schaut eigentlich ok aus (ich würde es nur nicht gerade unbedingt auch addLog nennen),  wenn "Licht_Tresenbereich" der richtige Name eines FRM_IN ist.
addLog in der 99_myUtils aus dem Wiki -> http://www.fhemwiki.de/wiki/Plot-Abriss_vermeiden ?

Bsp meines Garagentors mit FRM und deinem at :
2015-11-03_13:25:30 Garagentor reading: closed   << addLog
2015-11-03_13:26:30 Garagentor reading: closed   << addLog
2015-11-03_13:27:30 Garagentor reading: closed   << addLog
2015-11-03_13:28:30 Garagentor reading: closed   << addLog
2015-11-03_13:29:30 Garagentor reading: closed   << addLog
2015-11-03_13:30:30 Garagentor reading: closed   << addLog

Titel: Antw:Firmata-Eingang zyklisch abfragen
Beitrag von: LeonLeckstrom am 03 November 2015, 15:55:59
Leider bekomm ich keine werte, sondern nur folgenden fehler:
2015.11.03 15:43:25 3: addLog: Undefined subroutine &main::addLog called at (eval 8525) line 1.

Wo liegt der Fehler?
Danke!
Titel: Antw:Firmata-Eingang zyklisch abfragen
Beitrag von: Wzut am 03 November 2015, 17:14:28
Zitat von: LeonLeckstrom am 03 November 2015, 15:55:59
Wo liegt der Fehler?

darum auch meine Frage :
ZitataddLog in der 99_myUtils aus dem Wiki -> http://www.fhemwiki.de/wiki/Plot-Abriss_vermeiden ?
Titel: Antw:Firmata-Eingang zyklisch abfragen
Beitrag von: LeonLeckstrom am 04 November 2015, 06:44:45
Wenn ich

get Licht_Tresenbereich reading

oder

get Licht_Tresenbereich state


in die Kommandozeile eingebe, passiert nichts. bei "Alarm" bekomme ich ein off zurück. ist das ein Hinweis, dass addLog vielleicht kein reading auslösen kann?
Titel: Antw:Firmata-Eingang zyklisch abfragen
Beitrag von: Wzut am 04 November 2015, 10:03:58
sach mal liest du eigentlich was ich poste ? oder hat es einen bestimmten Grund warum du dich so hatnäckig weigerst eine simple Frage zu beantworten ?
Anyway, ich kann mit den Abfragen bei mir auch keinen FRM_IN Eingang auslesen, wozu auch ? Kopiere dir die addLog Sub aus dem Wiki in deine 99_myUtils, starte fhem neu und gut ist.
Titel: Antw:Firmata-Eingang zyklisch abfragen
Beitrag von: LeonLeckstrom am 04 November 2015, 17:49:33
Sorry, das hab ich völlig überlesen. Ich kannte das mit dem implementieren noch nicht. danke, du hast mir sehr geholfen! Es funktioniert, ohne deine hilfe hätte ich ja Jahre warten können.