Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Sehr cool, wenn man das so auch unter Windows nutzen kann.
Benutze das fast genauso (mit Adum dazwischen) schon seit ca. 2 Jahren auf meinem Raspi für smarthome.py und hatte noch keine Probleme.
Read/response/write sollte nun alles drei möglich sein. Die interne KNX Projekt Cache-Struktur hab ich verbessert, so dass das wandeln von GA<->GA-Name besser/schneller geht.
Bei mir läuft das ganze schon Produktiv und ersetzt einen (bisher aber noch kleinen) Teil meines HS. Das CV Backend läuft (bis auf rrdfetch) schon, erfordert jedoch eine noch händische Anpassung des Cometvisu-Codes. Das wird sich aber in den nächsten Wochen wohl bessern, wenn der Universal-Client in der CV weiter forciert wird.
Bis dahin muss ich langsam mal schauen dass ich eine stabile Codebasis bzw. Plugin/Script-API hin bekomme, so dass andere es auch einsetzen können.
Werde also parallel anfangen eine Anleitung zu verfassen die einem die Prinzipien und das Setup näher bringt, so dass auch dritte das System einsetzen können.
tuxedo Schöne Arbeit.
Wollte das mal auf meinen RPi installieren nach deiner Doku (ganz hinten am Ende).
Calimero muss wohl noch installiert werden.
Wie wird den Calimero installiert und wohin.
Für eine kleine Anleitung wäre ich Dankbar.
Noch ein frohes Weihnachtsfest.
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
Hallo
Beim Start bekomme ich folgende Ausgabe:
Ich müsste auf den KNX-Bus über eine IP-Schnittstelle --> Wiregate oder über die IP-Schnittstelle der Wago-SPS zugreifen.
Muss die IP-Schnittstelle noch irgendwo eingestell werden?
root@raspberrypi:/opt/kad# ./startup.sh
2015-12-28 19:16:12.836 INFO [main] java.util.logging.LogManager$RootLogger.log: Set formatter to de.root1.logging.JulFormatter
2015-12-28 19:16:13.457 INFO [main] de.root1.kad.KadMain.<clinit>: basedir: /opt/kad
2015-12-28 19:16:13.474 INFO [main] de.root1.kad.KadMain.<clinit>: Mode: deployment
2015-12-28 19:16:13.490 INFO [main] de.root1.kad.KadMain.<clinit>: devPluginDir: /opt/kad/../plugin-projects
2015-12-28 19:16:13.496 INFO [main] de.root1.kad.KadMain.<clinit>: pluginDir: /opt/kad/plugins
2015-12-28 19:16:13.991 INFO [main] de.root1.kad.pf4j.JarPluginManager.createPluginsDi rectory: Using pluginsdir: /opt/kad/plugins @ deployment
2015-12-28 19:16:14.012 INFO [main] ro.fortsoft.pf4j.DefaultPluginManager.initialize: PF4J version 0.0.0 in 'deployment' mode
2015-12-28 19:16:14.217 INFO [main] ro.fortsoft.pf4j.DefaultPluginStatusProvider.initi alize: Enabled plugins: []
2015-12-28 19:16:14.235 INFO [main] ro.fortsoft.pf4j.DefaultPluginStatusProvider.initi alize: Disabled plugins: []
2015-12-28 19:16:14.291 INFO [main] de.root1.kad.KadMain.<init>: Registering main services ...
2015-12-28 19:16:14.477 INFO [main] de.root1.kad.KadService.readConfig: No configfile: /opt/kad/conf/service_de.root1.kad.knxservice.KnxServiceImpl.pro perties
2015-12-28 19:16:14.774 INFO [main] de.root1.kad.knxservice.KnxCache.<init>: cache purge time: 480min
2015-12-28 19:16:14.791 INFO [main] de.root1.kad.knxservice.KnxCache.<init>: cache persist: false
2015-12-28 19:16:14.798 INFO [main] de.root1.kad.knxservice.KnxCache.<init>: cache persist interval: 15min
2015-12-28 19:16:14.840 INFO [main] de.root1.kad.knxservice.KnxServiceImpl.<init>: Reading knx project data ...
2015-12-28 19:16:15.774 WARNING [main] de.root1.kad.knxservice.KnxServiceImpl.readKnxProj ectData: No knxproject data available: [/opt/kad/conf/knxproject.knxproj]. Using cached value only!
2015-12-28 19:16:15.790 INFO [main] de.root1.kad.knxservice.KnxServiceImpl.readKnxProj ectData: No change in knxproject data detected. Continue with cached values.
2015-12-28 19:16:15.898 WARNING [main] de.root1.kad.knxservice.KnxServiceImpl.readKnxProj ectData: Error while reading file data
java.lang.NullPointerException
at de.root1.kad.knxservice.KnxServiceImpl.readKnxProj ectData(KnxServiceImpl.java:258)
at de.root1.kad.knxservice.KnxServiceImpl.<init>(KnxS erviceImpl.java:126)
at de.root1.kad.KadMain.<init>(KadMain.java:84)
at de.root1.kad.KadMain.main(KadMain.java:120)
2015-12-28 19:16:18.347 SEVERE [main] de.root1.kad.knxservice.KnxServiceImpl.<init>: Error setting up knx access
de.root1.slicknx.KnxException: Error connecting to KNX: Address already in use
at de.root1.slicknx.Knx.<init>(Knx.java:193)
at de.root1.kad.knxservice.KnxServiceImpl.<init>(KnxS erviceImpl.java:128)
at de.root1.kad.KadMain.<init>(KadMain.java:84)
at de.root1.kad.KadMain.main(KadMain.java:120)
Caused by: tuwien.auto.calimero.exception.KNXException: Address already in use
at tuwien.auto.calimero.knxnetip.KNXnetIPRouting.init (KNXnetIPRouting.java:310)
at tuwien.auto.calimero.knxnetip.KNXnetIPRouting.<ini t>(KNXnetIPRouting.java:135)
at tuwien.auto.calimero.link.KNXNetworkLinkIP.<init>( KNXNetworkLinkIP.java:154)
at de.root1.slicknx.SlicKNXNetworkLinkIP.<init>(SlicK NXNetworkLinkIP.java:27)
at de.root1.slicknx.Knx.<init>(Knx.java:187)
... 3 more
Caused by: java.net.BindException: Address already in use
at java.net.PlainDatagramSocketImpl.bind0(Native Method)
at java.net.AbstractPlainDatagramSocketImpl.bind(Abst ractPlainDatagramSocketImpl.java:93)
at java.net.DatagramSocket.bind(DatagramSocket.java:3 71)
at java.net.MulticastSocket.<init>(MulticastSocket.ja va:172)
at java.net.MulticastSocket.<init>(MulticastSocket.ja va:136)
at tuwien.auto.calimero.knxnetip.KNXnetIPRouting.init (KNXnetIPRouting.java:287)
... 7 more
2015-12-28 19:16:18.369 INFO [main] de.root1.kad.KadMain.<init>: Loading Plugins ...
2015-12-28 19:16:19.008 INFO [main] ro.fortsoft.pf4j.DefaultPluginManager.resolveDepen dencies: Plugin 'de.root1.kad-cvbackend' resolved
2015-12-28 19:16:19.040 INFO [main] ro.fortsoft.pf4j.DefaultPluginManager.resolveDepen dencies: Plugin 'de.root1.kad-logicplugin' resolved
2015-12-28 19:16:19.143 INFO [main] de.root1.kad.KadPlugin.readConfig: No configfile: /opt/kad/conf/plugin_de.root1.kad-cvbackend.properties
2015-12-28 19:16:19.242 INFO [main] de.root1.kad.KadPlugin.readConfig: No configfile: /opt/kad/conf/plugin_de.root1.kad-logicplugin.properties
2015-12-28 19:16:19.307 INFO [main] de.root1.kad.KadMain.<init>: Starting plugins ...
2015-12-28 19:16:19.323 INFO [main] ro.fortsoft.pf4j.DefaultPluginManager.startPlugins : Start plugin 'de.root1.kad-cvbackend:1.0.0'
2015-12-28 19:16:19.363 INFO [main] de.root1.kad.cvbackend.CometVisuBackendPlugin.star t: requires user session: false
2015-12-28 19:16:19.664 INFO [main] de.root1.kad.cvbackend.CometVisuBackendPlugin.star t: Started CometVisu backend server
2015-12-28 19:16:19.711 INFO [main] ro.fortsoft.pf4j.DefaultPluginManager.startPlugins : Start plugin 'de.root1.kad-logicplugin:1.0.0'
2015-12-28 19:16:19.733 INFO [main] de.root1.kad.logicplugin.LogicPlugin.start: Starting LogicPlugin
2015-12-28 19:16:20.881 INFO [main] de.root1.kad.logicplugin.LogicPlugin.start: Found logicscripts: [SourceContainer(samplescripts.LogicLightAutoOff)]
2015-12-28 19:16:20.962 INFO [main] de.root1.kad.logicplugin.LogicPlugin.start: Loading logicscript: samplescripts.LogicLightAutoOff
Exception in thread "main" java.lang.IllegalArgumentException: destination folder must exist: /opt/kad/compiledLogic
at de.root1.jrc.DiskJavaFileObject.<init>(DiskJavaFil eObject.java:58)
at de.root1.jrc.JavaRuntimeCompiler.compileToFile(Jav aRuntimeCompiler.java:149)
at de.root1.kad.logicplugin.SourceContainer.loadLogic (SourceContainer.java:157)
at de.root1.kad.logicplugin.LogicPlugin.start(LogicPl ugin.java:130)
at ro.fortsoft.pf4j.DefaultPluginManager.startPlugins (DefaultPluginManager.java:226)
at de.root1.kad.KadMain.<init>(KadMain.java:106)
at de.root1.kad.KadMain.main(KadMain.java:120)
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
KAD arbeitet zur Zeit noch rein auf KNX IP Routing. Tunneling ist auch möglich, ist aber noch nicht eingerichtet/einstellbar.
ich hoffe du kannst dich da noch ein wenig gedulden. Falls nicht: Du kannst mit dem eibd/knxd aus einem IP Interface auch einen IP Router machen bis ich soweit bin.
btw: du hast eine alte Version im Einsatz. /opt/kad löschen und mit neuem .tar.gz von gesagter Location weiter machen.
Ich bin heute zufällig über diese Thema gestolpert hört sich interessant an.
Bei mir läuft aktuell ein Raspi and den die Siemens BCU angeschlossen ist, KNXD macht die 'Verbindung' zum KNX, die Logik macht Fhem und die Optik Smartvisu.
Bei gelegenheit werde ich mir mal euer 'KAD' anschauen....
Ist in den letzten Wochen wegen KONNEKTING etwas vernachlässigt worden. Aber läuft bei mir unheimlich stabil. Muss an der LogikAPI noch kleinere Verbesserungen vornehmen und das CV Backend nochmal ein wenig anpassen. Aber sonst so läuft es gut.
Aktuell hat die KONNEKTING Entwicklung etwas vorang. Aber wie schon geschrieben läuft das System soweit stabil und zuverlässig.
Prinzipiell funktioniert ja auch die CometVisu Anbindung. Allerdings bedarf das noch etwas feinschliff, sowie eine Aktualisierung auf die neuste CometVisu Version. Hab hier ein wenig den Faden verloren wie es jetzt auf CV Seite mit dem SSE ausgegangen ist.
Daneben fehlt eigentlich nur noch die Entwicklung eines kleinen Persistenz-Backends (rrd ist nicht so mein Fall) an die CV RRD Schnittstelle zur Visualisierung von Grafiken/Kurven.
Die API für die Logikprogrammierung... Ja, da kann man prinzipiell noch einiges Verbessern. Die Zeit wird zeigen ob ich da nochmal einiges an Zeit rein investiere, oder bis auf weiteres so belasse.
Ich hab neben meinem experimentellen CometVisu Backend-Plugin noch eines für die SmartVisu gebastelt. Ich erhoffe mir von der SmartVisu ein klein wneig mehr "Performance" auf Client-Seite, da das meiste (aufbereiten der Seite etc.) ja Serverseitig (php ...) erledigt wird.
Der Backend-Prototyp funktioniert bereits (mit HTML5 ServerSentEvents für LIve-Updates). Aber damit das richtig Spaß macht, brauch ich ja nach wie vor noch ein Datenbank-Plugin das Daten aufzeichnet und der Visu dann zum Darstellen von Kurven/Plots zur Verfügung stellt.
Am liebsten wäre mir ein furchtbar einfaches DB-Schema (in mysql, postgres, h2, sqlite, völlig egal) das folgendes vorsieht:
Daten kommen (maximal) in einem Minuten-Raster an, bzw. werden auf dieses Minutenraster "gerundet".
D.h. Gruppenadresse A sendet ihre Daten minütlich
Gruppenadresse B sendet alle 3min ihr Daten auf den Bus.
Und Gruppenadresse C zu beliebigen Zeitpunkten
Zeitstempel werden beim persistieren auf den gemeinsamen Nenner gerundet.
Geht ein Wert um 09:01:33 (HH:MM:SS) ein, so wird daraus dann 09:02:00.
Nach einem konfigurierten Schema werden "alte Daten" nach einer gewissen Zeit aus dem System entfernt um ein überfüllen der Datenbank zu verhindern.
Soweit so gut. Der Grundgedanke dabei ist:
Man soll nichts konfigurieren, sondern einfach sagen für welche Daten/Gruppenadressen man sich interessiert. Fertig. Kein anlegen von RRDs, Datenbanken oder sonstigem. Es ist völlig egal was da kommt und wie oft es kommt: Der gemeinsame Nenner ist eine Auflösung von max. 1min.
Und da sind wir auch schon beim Problem: Die Auflösung der Daten zueinander...
Nehmen wir mal an wir haben zwei Gruppenadressen, a und b. a sendet alle 2min Daten, b sendet alle 3min:
Die erste Spalte verdeutlicht das Minutenraster, die zweite und dritte zeigt ob in dieser Minute Daten von a und/oder b vorhanden ist:
Code:
1 a
2
3 a b
4
5 a
6 b
7 a
8
9 a b
10
11 a
12 b
13 a
14
15 a b
16
17 a
18 b
Jetzt interessiert mich das Zeitfenster Minute 2-16. Also ein Abschnitt von 15min. Für die spätere Darstellung hab ich Platz für 10 Werte auf der X-Achse (in der realen Welt dann mehr, je nachdem wie viel Pixel Auflösung für die Grafik da ist).
Damit ergibt sich, dass im Idealfall alle 1,5min ein Wert ein Wert vorhanden sein müsste um die Grafik lückenlos zu füllen. Das passt aber nicht ganz auf das Minutenraster und muss auf 2min gerundet werden. Dabei ergibt sich, bedingt durch die unterschiedlichen Auflösungen (2min vs. 3min in einem Raster von 1min) der Daten folgendes Problem:
------: markiert das Zeitfenster (Minute 2-16)
x: markiert das Raster für die spätere Anzeige
!: markiert die Stelle wo tatsächlich Daten zum Anzeigen vorhanden sind
Code:
1 a
2 x ---------------------------
3 a b
4 x
5 a
6 b x!
7 a
8 x
9 a b
10 x
11 a
12 b x!
13 a
14 x
15 a b
16 x ---------------------------
17 a
18 b
Ergo: Bei dieser Verteilung von Daten kommen nur zwei B-Ergebnisse bei rum,
wobei es in besagtem Zeitfenster 7xA und 5xB gäbe, diese aber durch das "Raster" fallen.
Entweder mein Ansatz ist grundlegend "doof gewählt" oder ich muss das Problem noch geschickt lösen.
Vielleicht mag sich ja jemand an meinem Monolog beteiligen?!
Aktueller Gedanke zur Dokumentation (danke Eugenius ):
Die entstehenden Lücken erstmal Lücken sein lassen und erst später im Code, wenn man das Abfrageergebnis mit den Lücken hat "auffüllen". Und zwar mit dem "vorherigen" Wert auffüllen. Der der hatte ja, bis zum aktuellen Wert immer noch seine Gültigkeit.
Und für Fälle wo man diese "Gültigkeit" nicht mit Sicherheit sagen kann (z.b. ist die Wetterstation wegen Defekt+Reparatur 8 Wochen lang ausgefallen), könnte man pro Gruppenadresse noch eine Gültigkeit mit angeben (optional), so dass man sagen kann: Ist die Lücke größer als X Minuten, so lass die Lücke und fülle diese nicht auf.
Ich nehm das erstmal als Lösung so hin und schau wie weit ich damit komme. Muss mal einen Prototyp basteln.
Hm,
Ich würde eine Kurve durch die Punkte legen.
Ausserdem brauchst du für das Plotten doch keine gleichen X Werte.
Ausserdem würde ich die Daten in die Vergangenheit hin gröber werden lassen/aggregieren
Ja, das wäre am einfachsten. Doch die Schnittstelle zur Visu (Smartvisu/CometVisu/...) verlangt mehr oder weniger ein Array mit Daten und kann da nichts "interpolieren".
Ausserdem brauchst du für das Plotten doch keine gleichen X Werte.
Gleiche X-Wert-Verteilung braucht man eigtl nur dann, wenn man zwei unterschiedliche Datenquellen anzeigen will. Und das ist in vielen Fällen der Fall:
* Bezogener Strom vs. eingespeister Strom
* Zimmertemperatur vs. Außentemperatur
* Helligkeit vs. Photovoltaikstrom
Und unglücklicherweise läge das meiste bei mir in unterschiedlichen Auflösungen vor.
Ausserdem würde ich die Daten in die Vergangenheit hin gröber werden lassen/aggregieren
Und was hab ich davon, außer dass ich CPU-Zeit investieren muss um die Daten zu aggregieren? Speicherplatz kostet doch nichts mehr...
Beispiel: Bei meinen Eltern (ein Nicht-KNX-System) hab ich eine DB aufgesetzt die knapp 50 verschiedene Messwerte minütlich aufzeichnet.
Die Datenbank enthält nun knapp 3 Jahre an Daten. Das sind rund 84 Millionen Einzelwerte die zusammen (mit all dem DB Overhead) rund 5,3GB verschlucken. Das ist "nix". Da hab brauch ich auf dem Handy ja mehr Platz für Bilder des letzten Jahres... Und dank schnellem Datenbanksystem ist auch das suchen/filtern der Daten rasend schnell.
Natürlich macht es wenig Sinn die Daten unbegrenzt aufzuheben. Aber so 3-5 Jahre vorrätig zu haben finde ich ganz interessant/spannend. Gerade was Stromverbrauch oder Photovoltaik anbelangt kann ich so recht präzise Daten vergleichen ohne dass die Auflösung darunter leidet.
Hallo
Habe KAD auf einem UBUNTU 16.04 installiert.
Bekomme folgende Meldungen in der Console.
Code:
2016-09-24 19:15:56.217 WARNING [Calimero link notifier] de.root1.kad.knxservice.KnxServiceImpl$1.processEvent: Error converting groupaddress to groupaddress-name. ga unknown?. ga=1/3/7
de.root1.kad.knxservice.KnxServiceConfigurationException: Group address [1/3/7] can not be resolved to a groupaddress name. GA unkown.
at de.root1.kad.knxservice.KnxServiceImpl.translateGaToName(KnxServiceImpl.java:499)
at de.root1.kad.knxservice.KnxServiceImpl$1.processEvent(KnxServiceImpl.java:81)
at de.root1.kad.knxservice.KnxServiceImpl$1.write(KnxServiceImpl.java:120)
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)
Er kennt die GAs nicht.
GA 1/3/7 ist z.B. ein 1byte Analogwert.
Die knproject.knxproj habe ich mit der ETS 5.5.2 erstellt.
Kann ich die ETS 5 zum erstellen einer knproject.knxproj verwenden?
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
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar