Kam an. Ich schau's mir an.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Logikengine, java powered
Einklappen
X
-
Erstelle im kad-Verzeichnis mal ein Verzeichnis namens "cache" und starte KAD neu.
Nach dem Start sollte sich darin eine "KnxProjectCache.dat" befinden, die XML enthält. Dort enthalten sind alle GA Namen mit DPT und GA-Adressen die KAD aus dem KNX-Projekt sowie der user-xml extrahieren konnte.
Habs noch nicht überprüft, aber dadurch dass wohl das Cache-Verzeichnis nicht vorhanden ist und die Implementierung dies wohl (fälschlicherweise) auch nicht anlegt, wird er mit den GAs etc. durcheinander kommen. Werde das versuchen zu reproduzieren und ich passe auch den Code dahingehend an, dass das Verzeichnis angelegt wird wenn es fehlt.
Kommentar
-
Hallo
Das Hauptverzeichnis "kad" habe ich auch schon angelegt.
Nach dem ich das Verzeichnis "cache" angelegt habe bekomme ich auch die ersten Werte angezeigt.
Ich habe aus der ETS 4 jede Menge GAs ohne DPTs sind entstanden bei der Konvertierung irgendwie von ETS 2 -> ETS 3 -> ETS 4.
Habe sie in der ETS nicht unbedingt gebraucht , ja die ETS ja mit den 1Bit und 2Byte Werten auch so klar kommt.
Gruß NetFritz
KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP
Kommentar
-
Man kann das auch direkt in der ETS nachpflegen statt in der User XML. Einfach auf die GA gehen und ein verbundenes KO anklicken. In den Eigenschaften kann man dann dem KO sagen was dir ein DPT dahinter steckt. Und das landet dann im exportierten Projekt.
Die Ursache für diesen Missstand liegt in den meisten Fällen an der Produktdatenbank des Herstellers. Der war dann zu faul das KO genau genug zu spezifizieren.
Kommentar
-
Hallo
Man kann das auch direkt in der ETS nachpflegen statt in der User XML
KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP
Kommentar
-
Hallo
So bin vom Wochenendurlaub von der Nordsee zurück.
In der "KnxProjectCache.dat" werden bei mir die GAs ohne DPTs als dpt="-1.-01" eingetragen.
Code:<groupaddress ga="1/5/17" dpt="-1.-01" name="WP AI Störung" />
Code:2016-10-09 18:51:12.782 WARNING [Calimero link notifier] de.root1.kad.knxservice.KnxServiceImpl$1.processEvent: Error converting data to String with DPT-1.-01. event=GroupAddressEvent{source=1.1.254, destination=1/5/17, data=[0], type=GROUP_WRITE} ga=1/5/17 gaName='WP AI Störung' de.root1.slicknx.KnxFormatException: main number not found for -1.-01 at de.root1.slicknx.GroupAddressEvent.asString(GroupAddressEvent.java:278) at de.root1.kad.knxservice.KnxServiceImpl$1.processEvent(KnxServiceImpl.java:93) at de.root1.kad.knxservice.KnxServiceImpl$1.write(KnxServiceImpl.java:129) at de.root1.slicknx.GeneralGroupAddressListener.convertAndForward(GeneralGroupAddressListener.java:70) at de.root1.slicknx.GeneralGroupAddressListener.groupWrite(GeneralGroupAddressListener.java:133) at de.root1.slicknx.SlicKnxProcessCommunicatorImpl$NLListener.fireGroupReadWrite(SlicKnxProcessCommunicatorImpl.java:102) at de.root1.slicknx.SlicKnxProcessCommunicatorImpl$NLListener.indication(SlicKnxProcessCommunicatorImpl.java:84) at tuwien.auto.calimero.link.EventNotifier$Indication.invoke(EventNotifier.java:80) at tuwien.auto.calimero.link.EventNotifier.fire(EventNotifier.java:201) at tuwien.auto.calimero.link.EventNotifier.run(EventNotifier.java:141) Caused by: tuwien.auto.calimero.exception.KNXException: main number not found for -1.-01 at tuwien.auto.calimero.dptxlator.TranslatorTypes.createTranslator(TranslatorTypes.java:514) at de.root1.slicknx.GroupAddressEvent.asString(GroupAddressEvent.java:274) ... 9 more
die Datei "KnxProjectCache.dat" bei jedem Neustart beschrieben wird, es wird immer die Ausgabe angehängt.
Das war bei der vorigen Version nicht.
Gruß NetFritz
KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP
Kommentar
-
Das ZIP das du mir geschickt hast, enthält keine DPT Infos zu 1/5/15... Nur den GA Namen.
in /conf/knxproject.knxproj.user.xml finde ich:
Code:<ga address="1/5/17" dpt=""> <!-- "WP AI Störung" --> </ga>
Code:<groupaddress ga="1/5/17" dpt="-1.-01" name="WP AI Störung" />
Aber wenn du auf die GA angewiesen bist, dann solltest du in der .user.xml den DPT nachtragen. Dann wird dieser auch in die KnxProjectCache.dat übernommen und kann verwendet werden.
Wie gesagt: Es ist kein Fehler die DPTs in der ETS nachzupflegen. Auch wenn KAD aktuell nur ETS4 kann, du aber eigentlich ETS5 benutzt: Für später macht es Sinn die GAs mit korrekten DPTs zu versehen...
Kommentar
-
Hallo
Habe ein paar GAs in der ETS 4 mit DTP versehen.
In "LogicLightAutoOff.java" die GA Namen auf meine GAs geändert.
Es geht, Klasse feine Arbeit, Vielen Dank.
Im gleichen Verzeichniss eine neue Datei "WriteInfluxDB.java" erstellt.
Da soll in eine InfluxDB Value und Timestamp eingetragen werden.
Die GAs sind vom DPT 9.001.
Wie mache ich das, bin ich auf den richtigen Weg ?
In der Ausgabe finde ich "WriteInfluxDB.java" nicht.
Code:package samplescripts; import de.root1.kad.knxservice.KnxServiceException; import de.root1.kad.logicplugin.Logic; /** * * @author NetFritz 10/16 */ public class WriteInfluxDB extends Logic { String gaInfluxDB1 = "T Solar Rücklauf"; String gaInfluxDB2 = "T Solarspeicher oben"; String gaInfluxDB3 = "T Solarspeicher mitte"; String gaInfluxDB4 = "T Solarspeicher unten"; @Override public void init() { listenTo(gaInfluxDB1); listenTo(gaInfluxDB2); listenTo(gaInfluxDB3); listenTo(gaInfluxDB4); } @Override public void onDataWrite(String ga, String value) throws KnxServiceException { // public void knxEvent(GroupAddressEvent event) throws KnxException { log.info("------------------InfluxDB Event GA: -------------------"); log.info("GA {},Value {}", ga, value); // so wird mit Perl in die InfluxDB geschrieben // pv_db ist Datenbankname , test ist Tabellenname , $ga_name ist der Spaltenname und $value der einzutragene Wert // system("curl -i -XPOST 'http://192.168.2.74:8086/write?db=pv_db' --data-binary 'test $ga_name=$value $time'"); } }
KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP
Kommentar
-
Hallo
ja habe ich inzwischen auch gesehen.
Danke NetFritz
Als Ausgabe vom "LogicWriteInfluxDB.java" bekomme ich:
2016-10-12 15:06:36.290 INFO [KnxServiceOndataForwarding#1] samplescripts.LogicWriteInfluxDB.onDataWrite: ------------------InfluxDB Event GA: -------------------
2016-10-12 15:06:36.303 INFO [KnxServiceOndataForwarding#1] samplescripts.LogicWriteInfluxDB.onDataWrite: GA T Solarspeicher unten,Value 26.72Zuletzt geändert von NetFritz; 12.10.2016, 14:15.KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP
Kommentar
-
Hallo
Zur Info.
Seit 15.10.2016 läuft Build 02 | KAD Distribution 1.0.0-Beta1 (10.10.2016 15:59:13)
nun und schreibt die Werte der PV-Anlage in InbfluxDB.
Nochmal Danke NetFritzKNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP
Kommentar
-
Hallo
Meine Logik besteht z.Z. noch aus 2 Scripts 1 mal java und 1 mal ein Perl.
Perl Script deswegen weil ich noch keinen Weg gefunden habe
"curl -i -XPOST 'http://192.168.2.74:8086/write?db=pv_db' --data-binary 'test $GAname=$GAvalue $r_time'"
in java zu coden.
Gruß NetFritz
LogicWriteInfluxDB.java
Code:ackage samplescripts; import de.root1.kad.knxservice.KnxServiceException; import de.root1.kad.logicplugin.Logic; import java.io.*; /** * * @author NetFritz 10/16 */ public class LogicWriteInfluxDB extends Logic { String gaInfluxDB1 = "PV Tagesertrag"; String gaInfluxDB2 = "Haushalt_W"; String gaInfluxDB3 = "PV_W"; @Override public void init() { listenTo(gaInfluxDB1); listenTo(gaInfluxDB2); listenTo(gaInfluxDB3); } @Override public void onDataWrite(String ga, String value) throws KnxServiceException { String str1 = ga.replaceAll(" ","_"); // Leerzeichen durch _ ersetzen log.info("GA= {},Value= {}", str1, value); String excestr = "/var/www/myhouse/influxdb/write_influxdb.pl "; excestr = excestr + str1 + " " + value; log.info("excestr= {}",excestr); try { Runtime.getRuntime().exec(excestr); } catch(java.io.IOException e) { log.info("InfluxDB Fehler"); } } }
Code:#!/usr/bin/perl my $GAname = $ARGV[0]; my $GAvalue = $ARGV[1]; $t = localtime; my $inpath = '/var/log/influxdb.log'; open (DATEI, ">>$inpath") or die $!; my $tstp = int(time()); my $r_time = "$tstp"."000000000"; print "GAname= $GAname GAvalue= $GAvalue tr_time= $r_time \n"; my $ll = system("curl -i -XPOST 'http://192.168.2.74:8086/write?db=pv_db' --data-binary 'test $GAname=$GAvalue $r_time'"); print DATEI "$t GAname= $GAname GAvalue= $GAvalue ll= $ll \n"; close (DATEI);
Code:@reboot root /opt/kad/startup.sh >> /var/log/kad.log 2>&1
KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP
Kommentar
-
Um mit Java HTTP POST zu machen und Parameter im Header zu senden, hat mir immer dieser Codeschnipsel geholfen:
http://www.java2s.com/Tutorial/Java/...aJavaClass.htm
Wenn es keine Header-Parameter braucht: Weglassen, und direkt in den Stream schreiben.
Kommentar
Kommentar