Tropfbewässerung: Sketche kombinieren

Entwicklung und Bau von Hardware aller Art, die im HM-Umfeld eingesetzt werden kann

Moderator: Co-Administratoren

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: Tropfbewässerung: Sketche kombinieren

Beitrag von jp112sdl » 31.05.2020, 14:28

Und einfach eine externe Diagramm-Lösung einsetzen kommt nicht infrage?
Dann bist du völlig unabhängig von den Datentypen und den Internals der HMIPServer.jar
Da reicht sogar schon das CCU-Historian Addon auf der CCU aus.

Ansonsten kann ich Grafana sehr empfehlen, das nutze ich für Diagramme.
Bild

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

muellejo
Beiträge: 6
Registriert: 10.08.2021, 14:52
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 7 Mal
Danksagung erhalten: 1 Mal

Re: Tropfbewässerung: Sketche kombinieren

Beitrag von muellejo » 10.08.2021, 19:06

Hallo zusammen.
Ich habe in den letzten Tagen den Uni-sen-weight Sensor von Jerome nachgebaut und in mein RaspberryMatic System integriert.
Funktioniert alles tadellos.

Ich würde nun zusätzlich gerne eine Temperaturmessung mittels 18DS20 integrieren, und den aktuellen Temperaturwert mit im Datentelegramm
Übertragen und in der WebUI Anzeigen lassen. Derzeit komme ich leider nicht weiter, da ich dazu bis dato keinerlei Literatur bis auf die
Programm Beispiele in diesem Forum gefunden habe.

Die Temperaturmessung im Arduino Sketch funktioniert soweit.

Allerdings weiß ich nicht welche konkreten Änderungen im Sketch (Message::) sowie an der zugehörigen XML Datei notwendig sind.
Insbesondere würde mich interessieren wie dass mit den Indexwerten zu verstehen und zu handeln ist…..(oder gibt es dazu irgendwo eine Beschreibung?)

Kann mir evtl. einer der hier vertretenen Spezialisten oder auch Jérôme weiterhelfen?
Wäre nett. Gruß JM

HMSteve
Beiträge: 537
Registriert: 20.08.2019, 06:23
Hat sich bedankt: 13 Mal
Danksagung erhalten: 95 Mal

Re: Tropfbewässerung: Sketche kombinieren

Beitrag von HMSteve » 10.08.2021, 20:47

Willkommen hier im Forum!

Du willst also ein Waagenthermometer oder eine Thermometerwaage bauen. Dazu muss neben Erweiterung der Message und des xml ein neues device model kreiert werden, dass es noch nicht gibt. Infos auch unter asksinpp.de.
Man kann das alles grundsaetzlich aus den vorhandenen Beispielen recht gut ableiten, aber die Lernkurve ist echt steil. Anleitung waere allerdings recht komplex und eben auch zeitaufwendig, daher gibts keine. Zur konkreten Frage nach dem Index im xml, das ist die Position des Wertes in der Payload der Message in Byte,Bit, kann man gut nachzaehlen, wenn man sketch und xml nebeneinander legt.
Am besten, Du arbeitest Dich weiter rein und stellst konkrete Detailfragen, da kommen sicher Antworten.

Viele Gruesse,
Stephan

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: Tropfbewässerung: Sketche kombinieren

Beitrag von jp112sdl » 10.08.2021, 22:38

Ja, das ist mit 2 Sätzen nicht erklärt.
HMSteve hat geschrieben:
10.08.2021, 20:47
Am besten, Du arbeitest Dich weiter rein und stellst konkrete Detailfragen, da kommen sicher Antworten.
Halte ich auch für zielführender, denn bei
muellejo hat geschrieben:
10.08.2021, 19:06
wie dass mit den Indexwerten zu verstehen und zu handeln ist….
ist schon unklar, ob du bei Frames oder Parametern meinst

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

muellejo
Beiträge: 6
Registriert: 10.08.2021, 14:52
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 7 Mal
Danksagung erhalten: 1 Mal

Re: Tropfbewässerung: Sketche kombinieren

Beitrag von muellejo » 11.08.2021, 09:35

Hallo Stephan , hallo Jerome,vielen Dank für eure schnelle Antwort.

Ja Ihr habt beide recht ich muss konkreter werden.
Also das ganze soll dazu dienen, die starke Temperaturabhängigkeit des HX711 an meiner Waage zu kompensieren.
Diese befindet sich am Pool und meldet mir derzeit das aktuelle Gewicht vom PH- Kanister zurück.
Als Grundlage dient hierbei die kompensations Formel von den Bienenzüchtern. :wink:

Zur Zeit gelingt es mir immerhin schon Setup Daten von der Raspberrymatic zum Aktor zu senden.

Umgekehrt aber, um Daten vom Aktor zur Raspberrymatic zu senden scheitere ich.


Deshalb anbei ein Auszug aus dem Sketch um die aktuelle Temperatur (Variable-> send_temp) zu senden:
und die aktuell abgeänderte XML

Ab-Anlernen nach jeder Änderung sowie Neustart von rfd und ReGaHSS ist obligatorisch.

Ich sehe zwar im WebUI das Datenfeld Temperatur, aber der aktuelle Messwert wird mir nicht angezeigt?
Was mache ich verkehrt ??
Danke und Gruß JM

Code: Alles auswählen

class MeasureEventMsg : public Message {
  public:
    void init(uint8_t msgcnt, uint8_t channel, int32_t weight, bool batlow, uint8_t volt, uint8_t send_temp) {
     Message::init(0x10, msgcnt, 0x53, BIDI | WKMEUP, batlow ? 0x80 : 0x00, channel & 0xff );
      pload[0] = (weight >> 24) & 0x7f;
      pload[1] = (weight >> 16) & 0xff;
      pload[2] = (weight >> 8) & 0xff;
      pload[3] = (weight) & 0xff;
      pload[4] = (volt)   & 0xff;
      pload[5] = (send_temp) & 0xff;
      
      }
};
angepasste XML von Jerome:

Code: Alles auswählen

<?xml version="1.0" encoding="iso-8859-1"?>
<device version="2" rx_modes="CONFIG,WAKEUP,LAZY_CONFIG" cyclic_timeout="7200">
  <supported_types>
    <type name="HB-UNI-Sen-WEIGHT" id="HB-UNI-Sen-WEIGHT">
      <parameter index="10.0" size="2.0" const_value="0xF34B" />
    </type>
  </supported_types>
  <paramset type="MASTER" id="hm_uni_sen_dev_master">
    <parameter id="HBWEA_TRANSMIT_INTERVAL">
      <logical type="integer" min="10" max="3600" default="60" unit="s" />
      <physical type="integer" interface="config" list="0" index="32" size="2" />
    </parameter>
    <parameter id="LOW_BAT_LIMIT">
      <logical type="float" min="1.9" max="6" default="2.6" unit="V" />
      <physical type="integer" interface="config" list="0" index="18" size="1" />
      <conversion type="float_integer_scale" factor="10" />
    </parameter>
	<parameter id="HB_AVERAGING">
     <logical type="integer" min="1" max="20" unit="" default="8"/>
     <physical type="integer" interface="config" list="0" index="6" size="1"/>
    </parameter>
    <parameter id="Gramm pro Grad Positiv">
     <logical type="float" min="-50000.00" max="50000.00" unit="g" default="0.0" />              
     <physical type="integer" signed="true" interface="config" list="0" index="35.0" size="4" />
     <conversion type="float_integer_scale" factor="1.0"/>
    </parameter>                                                            
    <parameter id="Gramm pro Grad Negativ">
     <logical type="float" min="0" max="50000.00" unit="g" default="0.0" /> 
     <physical type="integer" interface="config" list="0" index="39.0" size="4" />
     <conversion type="float_integer_scale" factor="1.0"/>
    </parameter>
	<parameter id="Kalibrier Temperatur">
     <logical type="float" min="0" max="50.00" unit="°C" default="20.0" /> 
     <physical type="integer" interface="config" list="0" index="43.0" size="4" />
     <conversion type="float_integer_scale" factor="1.0"/>
    </parameter>
  </paramset>
  <channels>
    <channel index="0" type="MAINTENANCE" ui_flags="internal" class="maintenance" count="1">
      <paramset type="MASTER" id="maint_ch_master" />
      <paramset type="VALUES" id="maint_ch_values">
        <parameter id="UNREACH" operations="read,event" ui_flags="service">
          <logical type="boolean" />
          <physical type="integer" interface="internal" value_id="UNREACH" />
        </parameter>
        <parameter id="STICKY_UNREACH" operations="read,write,event" ui_flags="service,sticky">
          <logical type="boolean" />
          <physical type="integer" interface="internal" value_id="STICKY_UNREACH" />
        </parameter>
        <parameter id="CONFIG_PENDING" operations="read,event" ui_flags="service">
          <logical type="boolean" />
          <physical type="integer" interface="internal" value_id="CONFIG_PENDING" />
        </parameter>
        <parameter id="LOWBAT" operations="read,event" ui_flags="service">
          <logical type="boolean"/>
          <physical type="integer" interface="internal" value_id="LOWBAT"/>
        </parameter>
        <parameter id="RSSI_DEVICE" operations="read,event">
          <logical type="integer" />
          <physical type="integer" interface="internal" value_id="RSSI_DEVICE" />
        </parameter>
        <parameter id="RSSI_PEER" operations="read,event">
          <logical type="integer" />
          <physical type="integer" interface="internal" value_id="RSSI_PEER" />
        </parameter>
        <parameter id="DEVICE_IN_BOOTLOADER" operations="read,event" ui_flags="service">
          <logical type="boolean" />
          <physical type="integer" interface="internal" value_id="DEVICE_IN_BOOTLOADER" />
        </parameter>
        <parameter id="UPDATE_PENDING" operations="read,event" ui_flags="service">
          <logical type="boolean" />
          <physical type="integer" interface="internal" value_id="UPDATE_PENDING" />
        </parameter>
      </paramset>
    </channel>
    <channel autoregister="true" index="1" type="HB_GENERIC_WEIGHT" count_from_sysinfo="23.0:1.0">
     <paramset type="MASTER" id="HB-UNI-Sen-WEIGHT_master">
      <parameter id="HB_TARAONRESTART">
        <logical type="boolean" default="false"/>
        <physical type="integer" interface="config" list="1" index="5" size="0.1"/>
      </parameter>
      <parameter id="HB_TARA">
        <logical type="float" min="-50000.00" max="50000.00" unit="g" default="0"/>
        <physical type="integer" signed="true" interface="config" list="1" index="1" size="4"/>
        <conversion type="float_integer_scale" factor="100"/>
      </parameter>
     </paramset>
     <paramset type="VALUES" id="HB-UNI-Sen-WEIGHT_values">
       <parameter id="HB_WEIGHT" operations="read,event" control="NONE">
         <logical type="float" min="-50000.0" max="50000.00" unit="g"/>
         <physical type="integer" interface="command" value_id="HB_WEIGHT" no_init="true">
           <event frame="MEASURE_EVENT"/>
         </physical>
         <conversion type="float_integer_scale" factor="100"/>
       </parameter>
	   <parameter id="OPERATING_VOLTAGE" operations="read,event" control="NONE">
         <logical type="float" min="0.0" max="25.5" unit=" V"/>
         <physical type="integer" interface="command" value_id="OPERATING_VOLTAGE">
            <event frame="MEASURE_EVENT"/>
         </physical>
         <conversion type="float_integer_scale" factor="10"/>
       </parameter>
	   <parameter id="LOWBAT" operations="read,event" control="NONE">
         <logical type="boolean"/>
         <physical type="integer" interface="command" value_id="LOWBAT">
           <event frame="MEASURE_EVENT"/>
           <event frame="INFO_LEVEL"/>
         </physical>
       </parameter>
	   <parameter id="TEMPERATURE" operations="read,event" control="NONE">
         <logical type="float" min="-80.0" max="80.0" unit=" °C"/>
         <physical type="integer" interface="command" value_id="TEMPERATURE" no_init="true">
            <event frame="MEASURE_EVENT"/>
         </physical>
         <conversion type="float_integer_scale" factor="10"/>
       </parameter>
	 </paramset>
	  <paramset type="LINK" id="HB-UNI-Sen-WEIGHT_link" />
    </channel>
  </channels>
  <frames>
    <frame id="INFO_LEVEL" direction="from_device" allowed_receivers="BROADCAST,CENTRAL,OTHER" event="true" type="0x10" subtype="6" subtype_index="9" channel_field="10">
      <parameter type="integer" index="12.7" size="0.1" param="LOWBAT"/>
    </frame>
    <frame id="MEASURE_EVENT" direction="from_device" event="true" channel_field="10" type="0x53">
      <parameter type="integer" index="9.7" size="0.1" param="LOWBAT"/>
      <parameter type="integer" signed="true" index="11.0" size="3.7" param="HB_WEIGHT" />
      <parameter type="integer" signed="true" index="15.0" size="1.0" param="OPERATING_VOLTAGE" />
	  <parameter type="integer" signed="true" index="17.0" size="1.0" param="TEMPERATURE" />
      
	</frame>
 </frames>
  <paramset_defs></paramset_defs>
</device>


HMSteve
Beiträge: 537
Registriert: 20.08.2019, 06:23
Hat sich bedankt: 13 Mal
Danksagung erhalten: 95 Mal

Re: Tropfbewässerung: Sketche kombinieren

Beitrag von HMSteve » 11.08.2021, 09:42

Erster Gedanke zu Deinem Vorhaben: Wenn es nur um eine Temperaturkompensation innerhalb des Device geht, mach das doch direkt dort, dann brauchst Du kein neues device model, kein neues add-on auf der CCU etc. Oder spricht etwas dagegen?

Viele Gruesse,
Stephan

HMSteve
Beiträge: 537
Registriert: 20.08.2019, 06:23
Hat sich bedankt: 13 Mal
Danksagung erhalten: 95 Mal

Re: Tropfbewässerung: Sketche kombinieren

Beitrag von HMSteve » 11.08.2021, 09:44

PS: In Deinem Code ist die message ein byte zu kurz, deswegen ist die Temperatur nicht drin. Messagelaenge muss 11 byte + Anzahl bytes der Payload sein, bei Dir also 11h statt 10h. Solltest Du im seriellen Montor beobachten koennen.

muellejo
Beiträge: 6
Registriert: 10.08.2021, 14:52
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 7 Mal
Danksagung erhalten: 1 Mal

Re: Tropfbewässerung: Sketche kombinieren

Beitrag von muellejo » 11.08.2021, 10:21

Hallo Stephan, ja Du hast recht könnte ich machen.
Aber ich will nicht bei jeder Änderung der Einstellungen zum Technikschrank im Garten wo der Aktor steht hinlatschen. :roll:

Hallo Stephan auch eine Änderung der Message auf 11Byte Länge hat leider trotz Neustart und erneuten Ab-Anlernen keinen Erfolg gebracht
11-08-_2021_10-06-25.jpg
Die Lösung muss meiner Ansicht nach in der XML zu finden sein.
Seriellen Monitor ? finde ich wo ?
Gruß JM

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: Tropfbewässerung: Sketche kombinieren

Beitrag von jp112sdl » 11.08.2021, 10:30

muellejo hat geschrieben:
11.08.2021, 10:21
Die Lösung muss meiner Ansicht nach in der XML zu finden sein.
Der Index muss 16 sein
<parameter type="integer" signed="true" index="16.0" size="1.0" param="TEMPERATURE" />

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

jp112sdl
Beiträge: 12085
Registriert: 20.11.2016, 20:01
Hat sich bedankt: 847 Mal
Danksagung erhalten: 2139 Mal
Kontaktdaten:

Re: Tropfbewässerung: Sketche kombinieren

Beitrag von jp112sdl » 11.08.2021, 10:35

Reicht dir 1 Byte für die Temperatur überhaupt ? Verzichtest du auf Nachkommastellen sowie Negativwerte?

VG,
Jérôme ☕️

---
Support for my Homebrew-Devices: Download JP-HB-Devices Addon

Antworten

Zurück zu „Hardwareentwicklung und Selbstbau von Aktoren und Sensoren“