1-Wire Intervall

Grüß Euch zusammen!
lange nix mehr gehört/gelesen.

Nun nach unzähligen Jahren will ich wieder bissi was mit IPS machen. Einmal ein paar Temperaturen abgreifen mit 1-Wire, das läuft bereits. Und nun will ich noch ein paar Zustands-Statis ermitteln. Dazu bin ich mir noch nicht ganz sicher wie ich das mit 1-Wire realisieren werde. Ein paar Ideen habe ich schon.

Aber vorerst drängt sich mir die Frage auf, kann man 1-Wire öfter als im Intervall von 1 Sekunde abfragen? Weil bei den Temperaturen sind ja als kleinster Intervall 1 Sekunde Einstellbar. Die Zustände welche ich jetzt noch auf Ein/Aus abfragen will, müssen aber im Zehntel Sekundentakt abgefragt werden. Geht das überhaupt? Auf die schnelle finde ich nichts dazu. Aber ich denke mit einem Script kann man das vlt. machen, oder?

Meine erste Idee dazu wäre ein DS2450 mit Analog Eingängen. Das wäre das richtige für mich.

SG, Hinti.

…schau mal ins Datenblatt, für die Temperaturmessung sind je nach Auflösungen verschiedene Mindestzeiten erforderlich, mit dem notwendigen Overhead der Kommunikation ist eine Sekunde schon ein realistischer Minimalwert…

Joachim

Servus Joachim,
…nein nein, das meinte ich nicht. Für die Temperaturen reicht mir alle 10 Sekunden oder so. Aber das was ich noch machen möchte, Schaltzustände abfragen, evtl. mit dem A/D Wandler DS2450. Diese I/Os würde ich gerne alle 100ms abfragen.

…auch dort halte ich es bei dem Traffic für unumsetzbar. Außerdem wird in der Regel bei solchen Konstrukten (pollen) massenhaft Traffic produziert ohne das ein Ereignis eintritt.
Vielleicht besser: I²C, dort gibt es diverse Sensoren die einen Interrupt bei Änderung am Eingang haben und ich sie auf diese Message gezielt abfragen kann…

Joachim

1-Wire steht zur Verfügung - und eine Geräte-ID wird man da schon entsprechend oft abfragen können! Egal, werds einfach probieren. Per Script müsste das ja gehen. Die Realisierbakeit des Intervalls ist mir ja die Frage gewesen.

Die Sensoren in so kurzen Zeitabständen per PHP abzufragen macht keinen Sinn. Besser wäre es, die Abfrage an einen Mikrocontroler wie Arduino/Raspberry zu delegieren, der im besten Fall die Statusänderung am Pin per Interrupt bekommt und per IPS API Call meldet bzw. zur Not auch in einen seperaten Prozess pollen kann, ohne den Rest lahmzulegen.

Tommi

Zur Kenntnis genommen.

Die Controller von ESERA senden bei Änderung des Zustands innerhalb von wenigen ms den neuen Wert.

Ich habe noch ein AVR-NET-IO rumliegen. Mal schauen ob ichs mit dem hinbekomme.

Muss aber auch noch dazu sagen. Ein 1-Wire Netz mit insgesamt 3 Temperatursensoren und zwei Digital-IN, wenn das überfordert ist mit Abfragen alle 15 Sekunden bei Temps und bei nur einem IO-in alle 100ms, dann hätte es kein Bus werden dürfen!

Aber so wie ich das sehe geht es ja sowieso nicht, da in IPS ein Script ja auch nur im kürzesten Fall alle Sekunden getriggert werden kann. Was ja meine ursprüngliche Frage war - ob das überhaupt geht.

Horses for courses. Für diese Anwendung, einen Zustand im 100ms-Abstand zu pollen, ist 1-wire nicht konzipiert.

Es ist konzeptionell deutlich sinnvoller, daß Busteilnehmer etwas mehr Intelligenz an Bord haben und sich melden, wenn’s was zu melden gibt.

Also ich habe 7 Sensoren an einen GPIO vom PI3 hängen, und frage die alle 10 Sekunden ab, ohne Probleme.
1 Sekunde ist sportlich, da komme ich mit meinem Atmega am auch nicht hin, da bin ich pro Sensor bei ca +1 Sekunde, im 15 Sekunden Takt, aber da im 2 Draht Modus (da braucht der DS schon min. 0,7 Sekunden um „aufzuladen“)
Selbst für eine Kesselsteuerung, reicht 10 Sekunden Abfrage, aber viel länger darf es auch nicht sein.

Hallo Hinti,

hast wirklich lange nichts mehr von dir hören lassen, aber immer sofort wieder sehr fordernd. Ein Bus kann ja viele Eigenschaften haben. Bandbreite/Durchsatz, Auflösung, Reichweite, Kabelanforderungen und Latenz/Jitter. Bei Aussagen wie, „dann hätte es kein Bus werden dürfen“ bin ich da als Nachrichtentechnik Ingenieur doch etwas oder sogar sehr irritiert. Man kann nicht alles gleichzeitig haben.

Aber nun zu den Fakten (no alternativ facts or fake news). Ich betreibe seit Jahren an einem AVR-NET-IO mit Ethersex ein 1-Wire Netz für Temperaturmessungen. Abfrageintervalle unter 5 sec hatten die Stabilität massiv beeinträchtigt.

Wenn du schneller AD-Werte einlesen möchtest, wäre I2C eine Alternative. Mit ADS1115, PCF8591 und MCP3424 sind hohe Abtastraten und auch Auflösung möglich.

Bei noch höheren Anforderungen musst du ein Oszi über USB 3.0 oder GBit-Ethernet auslesen.

Schreib doch mal was du willst:

  • Max. Durchsatz in bit/s (oder auch Abtastrate)
  • Auflösung des AD Wandlers in bits (8/10/12/16/18/24/32)
  • Länge bzw. Topologie der Kabel (in Metern, bzw. Ring, Stern oder Geflecht)
  • welche Kabel (2 Draht oder CAT7)
  • Latenz und Jitter in ms oder usec
  • bevorzugtes Interface, nativ, 1-Wire, I2C, USB, Gbit

Gruss
Bernd

…wenn das alles auf kurzer Distanz ist, wäre da I2C deutlich besser geeignet…[emoji6]

Joachim

Hallo Joachim,

da stimme ich dir zu. Wir hatten ja die Diskussion welcher AD Chip wäre besser. Der MCP3424 hatte als Sieger ja die besten technischen Eigenschaften (bis 18 bit). Leider kriegt man den nicht so billig als Breakout wie den ADS1115 (max. 16 bit). Ich will dich damit aber nicht unter Druck setzen, diesen in dein Modul einzubauen. Den ADS1115 kann man trivial über Python Exec Befehle in IP Symcon einlesen (Wenn er am I2C-Bus eines Raspberry oder ESP8266 hängt).

Gruss
Bernd

Hallo Bernd,

zur Verfügung steht ja jetzt auch schon der PCF8591, der macht ebenso wie der 1-Wire-A/D 8-Bit.
Wenn ich die Tücken des BME680 erfolgreich umschifft habe und dann immer noch Bedarf ist, kann man sich den ADS1115 auch noch mal wieder anschauen.:wink:
Für die einfache aber sichere Temperaturmessung ist aber sicherlich der DS18x20 immer noch am Besten geeignet.

Joachim

Da hab ich ja was losgetreten :stuck_out_tongue:

Ich erfasse mit 1-Wire 3 Temperaturen an der Heizung und lese diese derzeit alle 30 Sekunden aus. Jetzt will ich zusätzlich den Schneckenmotor (Ein/Aus) erfassen. Da ich dort den 1w Bus habe wollte ich den halt nutzen! Die Schnecke ist je nach Ofenleistung, zwischen 3,3 und 12 Sekunden für 0,7 bis 2,2 Sekunden aktiv. Je nach zusammenspiel Lambdasonde/Abgastemperatur etc.

Ich will also genau die Schneckenlaufzeit haben. Das ist es warum ich mit 1 Sekunde nicht auskomme und Zehntelsekunden brauche :rolleyes:

PS: Aber fordernd bin ich nicht. Schließlich wollte ich ja nur wissen ob man in IPS kleiner 1 Sekunde triggern kann.