Hallo zusammen,
ich beschäftige mich erst seit kurzem mit FHEM.
Inspiriert hat mich eine Eigenbau-Poolsteuerung die ich im Netz gefunden habe.
Diese basiert auf einem Arduino mit dem PH-, ORP und Temperatur-Sensoren ausgewertet werden.
Die Verbindung zu FHEM funktioniert über ein Ethernet-Shield (W5100) das mittels HTTPMOD ausgelesen wird.
Soweit funktioniert das auch alles ganz gut.
Nun will ich aber nicht nur einen Temperatur-Sensor damit auswerten sondern gleich mehrere.
Wenn ich 4 Sensoren sende werden die Werte anstandslos ausgelesen und übernommen.
Sobald ich einen 5. Sensor einbinde erhalte ich plötzlich folgende Fehlermeldungen:
LAST_ERROR read from http://192.168.178.10:80 timed out
Ich habe schon mit den timeout-Werten in FHEM gespielt, aber leider ohne Erfolg.
Nachstehend findet ihr den Code-Ausschnitt aus FHEM:
define poolduino HTTPMOD http://192.168.178.10/getvalues 10
attr poolduino userattr event-min-interval event-on-change-reading event-on-update-reading reading04Name reading04Regex reading05Name reading05Regex reading06Name reading06Regex reading07Name reading07Regex reading08Name reading08Regex reading09Name reading09Regex stateFormat timeout userReadings verbose
attr poolduino event-min-interval state:60
attr poolduino get1CheckAllReadings 1
attr poolduino reading04Name ph
attr poolduino reading04Regex ph: ([0-9.]+)
attr poolduino reading05Name orp
attr poolduino reading05Regex orp: ([0-9.]+)
attr poolduino reading06Name TempWaterMess
attr poolduino reading06Regex TempWaterMess: ([0-9.]+)
attr poolduino reading07Name pressure
attr poolduino reading07Regex pressure: ([0-9.\-]+)
attr poolduino reading08Name flow
attr poolduino reading08Regex flow: ([0-9.]+)
attr poolduino reading09Name flow2
attr poolduino reading09Regex flow2: ([0-9.]+)
attr poolduino room STARTPAGE,POOL
attr poolduino stateFormat {sprintf("ph: %.2f, orp: %.1f mV, TempWaterMess: %.1f°;C, pressure: %.0f mbar, flow: %.0f %%, flow2: %.0f %%", ReadingsVal($name,"ph",0), ReadingsVal($name,"orp",0), ReadingsVal($name,"TempWaterMess",0), ReadingsVal($name,"pressure",0), ReadingsVal($name,"flow",0), ReadingsVal($name,"flow2",0))}
attr poolduino timeout 8
attr poolduino userReadings state {sprintf("T: %.1f ph: %.2f orp: %.1f P: %.0f F: %.0f F2: %.0f", ReadingsVal($name,"TempWaterMess",0), ReadingsVal($name,"ph",0), ReadingsVal($name,"orp",0), ReadingsVal($name,"pressure",0), ReadingsVal($name,"flow",0), ReadingsVal($name,"flow2",0))}
attr poolduino showBody 1
attr poolduino showError 1
attr poolduino showMatched 1
attr poolduino verbose 5
Und das ist der Wert der in buf geschrieben wird:
HTTP/1.1 200 OK
Content-Type: text/plain
Connection: close
pressure: 6 flow: 0 TempWaterPool: 23.37 TempWaterMess: 23.50 TempWaterAus: 23.37 Temp-outside: 23.37 TempAirSun: 23.50 TempWaterWP:
Vielleicht kann mir jemand helfen, ich sehe den Fehler leider nicht.
Grüße,
Jürgen
Warum frägst du die Werte alle 10s ab?
Ist das notwendig?
Wenn ja: warum!?
EDIT: da macht der timeout von 8s ja nicht so wirklich Sinn...
Vielleicht kommt da dein Arduino-Web (nehme ich mal an) nicht mehr hinterher, wenn 5 Sensoren dran hängen...
Wie sind denn die Sensoren an den Arduino angebunden?
Wie werden sie ausgelesen?
Gibt es beim Abfragen der Sensoren "Wartezeiten"?
EDIT2: warum fängst du erst mit Reading04 an?
Gruß, Joachim