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.
Ankündigung
Einklappen
Keine Ankündigung bisher.
MQTT API Server und MQTT Clients - LBS19001051 - LBS19001054
War bei mir untergegangen. Habe es aber gerade mal angepasst. Ist aber weitgehend ungetestet. Habe nur getestet, ob der LBS weiterhin funktioniert.
Deinen Usecase müsstest du dann in deiner Umgebung testen. Ich lade die Version 0.2.2 gleich hoch.
kommt wohl von zu schnellen Edomi triggern.
An einigen Status iKO's die Lichtgruppen zusammenfassen (UND Gatter von Status) habe ich jetzt ein SendbyChange ohne init dazwischen.
Jetzt kommen seid 8h keine Fehler mehr.
Bei meinen Test hatte ich manuell getriggert. Da lag natürlich immer mehr als ca. 500ms dazwischen.
Das doppelte abfeuern eines Payloads ist es wohl nicht.
Code:
Wed Sep 13 18:30:43 2017: New connection from 192.168.xx.xxon port 1883.
Wed Sep 13 18:30:43 2017: New client connected from 192.168.xx.xxas EDOMI MQTT Publish Client (306) (c1, k60, u'edomi').
Wed Sep 13 18:30:43 2017: New connection from 192.168.xx.xxon port 1883.
Wed Sep 13 18:30:43 2017: New client connected from 192.168.xx.xxas EDOMI MQTT Publish Client (407) (c1, k60, u'edomi').
Wed Sep 13 18:30:43 2017: Client EDOMI MQTT Publish Client (306) disconnected.
Wed Sep 13 18:30:43 2017: Client EDOMI MQTT Publish Client (407) disconnected.
Wed Sep 13 18:31:25 2017: New connection from 192.168.xx.xxon port 1883.
Wed Sep 13 18:31:25 2017: New client connected from 192.168.xx.xxas EDOMI MQTT Publish Client (306) (c1, k60, u'edomi').
Wed Sep 13 18:31:25 2017: New connection from 192.168.xx.xxon port 1883.
Wed Sep 13 18:31:25 2017: New client connected from 192.168.xx.xxas EDOMI MQTT Publish Client (407) (c1, k60, u'edomi').
Wed Sep 13 18:31:25 2017: Client EDOMI MQTT Publish Client (306) disconnected.
Wed Sep 13 18:31:25 2017: Client EDOMI MQTT Publish Client (407) disconnected.
Wed Sep 13 18:31:42 2017: New connection from 192.168.xx.xxon port 1883.
Wed Sep 13 18:31:42 2017: New client connected from 192.168.xx.xxas EDOMI MQTT Publish Client (306) (c1, k60, u'edomi').
Wed Sep 13 18:31:42 2017: New connection from 192.168.xx.xxon port 1883.
Wed Sep 13 18:31:42 2017: New client connected from 192.168.xx.xxas EDOMI MQTT Publish Client (407) (c1, k60, u'edomi').
Wed Sep 13 18:31:42 2017: Client EDOMI MQTT Publish Client (306) disconnected.
Wed Sep 13 18:31:42 2017: Client EDOMI MQTT Publish Client (407) disconnected.
Wed Sep 13 18:31:48 2017: New connection from 192.168.xx.xxon port 1883.
Wed Sep 13 18:31:48 2017: New client connected from 192.168.xx.xxas EDOMI MQTT Publish Client (306) (c1, k60, u'edomi').
Wed Sep 13 18:31:48 2017: New connection from 192.168.xx.xxon port 1883.
Wed Sep 13 18:31:48 2017: New client connected from 192.168.xx.xxas EDOMI MQTT Publish Client (407) (c1, k60, u'edomi').
Wed Sep 13 18:31:49 2017: Client EDOMI MQTT Publish Client (306) disconnected.
Wed Sep 13 18:31:49 2017: Client EDOMI MQTT Publish Client (407) disconnected.
Wed Sep 13 18:32:13 2017: New connection from 192.168.xx.xxon port 1883.
Wed Sep 13 18:32:13 2017: New client connected from 192.168.xx.xxas EDOMI MQTT Publish Client (407) (c1, k60, u'edomi').
Wed Sep 13 18:32:13 2017: New connection from 192.168.xx.xxon port 1883.
Wed Sep 13 18:32:13 2017: New client connected from 192.168.xx.xxas EDOMI MQTT Publish Client (306) (c1, k60, u'edomi').
Wed Sep 13 18:32:14 2017: Client EDOMI MQTT Publish Client (407) disconnected.
Wed Sep 13 18:32:14 2017: Client EDOMI MQTT Publish Client (306) disconnected.
Wed Sep 13 18:32:18 2017: New connection from 192.168.xx.xxon port 1883.
Wed Sep 13 18:32:18 2017: New client connected from 192.168.xx.xxas EDOMI MQTT Publish Client (306) (c1, k60, u'edomi').
Wed Sep 13 18:32:18 2017: New connection from 192.168.xx.xxon port 1883.
Wed Sep 13 18:32:18 2017: New client connected from 192.168.xx.xxas EDOMI MQTT Publish Client (407) (c1, k60, u'edomi').
Wed Sep 13 18:32:18 2017: Client EDOMI MQTT Publish Client (306) disconnected.
Wed Sep 13 18:32:18 2017: Client EDOMI MQTT Publish Client (407) disconnected.
Wed Sep 13 18:32:21 2017: New connection from 192.168.xx.xxon port 1883.
die jeweils doppelt vorhanden "Client EDOMI MQTT Publish Client (306) disconnected." müsste eigentlich dem per Hand gepublisheden KO sein.
Keine Fehler im Edomi Log nach durchführung.
Ich schaue mir aber mal die Conf im Mosquitto.conf an.
LG
Den Zeitstempeln nach, könnte da ein Zusammenhang bestehen.
Hast Du ggf. irgendwo im Mosquitto konfiguriert, dass du nur eine Connection mit derselben ID (hier "EDOMI MQTT PublishClient") haben darfst? Vielleicht ist es aber auch die Default Einstellung oder sogar erzwungen. Dann müsste der Push Client die Connection-ID ggf. dynamisch wählen. Passiert dann aber vermutlich nur, wenn zwei Push so schnell nacheinander kommen, dass die erst noch nicht fertig ist, wenn die zweite startet. Kannst das ja mal testen: z.B. mit einem KO zwei unterschiedliche MQTT Push Client LBS triggern. Die sollten dann ja quasi gleichzeitig gestartet werden. Vielleicht kann man damit das Verhalten provozieren.
Dieser Fehler geht erst dann weg, wenn du mit der Installation weiter machst. Denn er hat ja immer noch das alte Repo in /etc/yum.repos.d.
Wenn du beim
Code:
cp home_oojah_mqtt.repo /etc/yum.repos.d/
bist, dann geht der Fehler weg. Du kannst natürlich auch vorher ein
Code:
rm /etc/yum.repos.d/home_oojah_mqtt.repo
machen. Dann sollte auch von Anfang an kein Fehler mehr passieren. Aber wie gesagt, das ist unkritisch.
Wichtig ist, dass dann der zweite yum install Befehl keine Fehler mehr liefert.
Ja, das Mosquitto Repository ist auf download.opensuse.org gelöscht worden.
Habe dies jetzt auf github in der repo-Datei angepasst.
Am besten jetzt noch mal die Installation durchführen.
Interessanterweise hat mein EDOMI Server beim Ausführen des ./install.sh vom mysql_udf einen Reboot gemacht. Vermute das liegt daran, dass mysql kurz neu gestartet wird und daher EDOMI neu startet.
Am besten wie folgt vorgehen:
Löschen der alten Installationsdateien:
Code:
rm -rf /tmp/Mosquitto-PHP
Danach das Installationsskript zeilenweise in einer Shell ausführen:
Code:
yum -y install php-devel php-process git gcc make mysql-devel
cd /tmp
git clone https://github.com/jonofe/lib_mysqludf_sys
cd lib_mysqludf_sys/
./install.sh
cd /tmp
rm -rf lib_mysqludf_sys/
git clone https://github.com/jonofe/Mosquitto-PHP
cd Mosquitto-PHP
cp home_oojah_mqtt.repo /etc/yum.repos.d/
yum -y install libmosquitto1 libmosquitto-devel mosquitto-clients
phpize
./configure --with-mosquitto=/usr/lib64
make
make install
cd /tmp
rm -rf Mosquitto-PHP
echo "extension=mosquitto.so" > /etc/php.d/mosquitto.ini
php -v
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mosquitto.so' - /usr/lib64/php/modules/mosquitto.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP 5.3.3 (cli) (built: Mar 22 2017 12:27:09)
Copyright (c) 1997-2010 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2010 Zend Technologies
hi ich hab da mal ein Problem: ich hab den mosquito Server auf nem Pi laufen ...
wenn ich die 19001051_install.sh ausführe kommt das dabei raus ..:
Code:
[root@edomi tmp]# sh 19001051_install.sh
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.rrzn.uni-hannover.de
* extras: mirror.tobias-wollmann.com
* updates: mirror.tobias-wollmann.com
base | 3.7 kB 00:00
extras | 3.4 kB 00:00
http://download.opensuse.org/repositories/home%3A/oojah%3A/mqtt/CentOS_CentOS-6/ repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned er ror: 403 Forbidden"
Trying other mirror.
Error: Cannot retrieve repository metadata (repomd.xml) for repository: home_ooj ah_mqtt. Please verify its path and try again
Initialized empty Git repository in /tmp/lib_mysqludf_sys/.git/
remote: Counting objects: 17, done.
remote: Total 17 (delta 0), reused 0 (delta 0), pack-reused 17
Unpacking objects: 100% (17/17), done.
Compiling the MySQL UDF
gcc -DMYSQL_DYNAMIC_PLUGIN -fPIC -Wall -I/usr/include/mysql -I. -shared lib_mysq ludf_sys.c -o /usr/lib64/mysql/plugin/lib_mysqludf_sys.so
MySQL UDF compiled successfully
Please provide your MySQL root password
MySQL UDF installed successfully
Initialized empty Git repository in /tmp/Mosquitto-PHP/.git/
remote: Counting objects: 1147, done.
remote: Total 1147 (delta 0), reused 0 (delta 0), pack-reused 1147
Receiving objects: 100% (1147/1147), 245.44 KiB, done.
Resolving deltas: 100% (710/710), done.
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
* base: ftp.rrzn.uni-hannover.de
* extras: mirror.tobias-wollmann.com
* updates: mirror.tobias-wollmann.com
http://download.opensuse.org/repositories/home%3A/oojah%3A/mqtt/CentOS_CentOS-6/ repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned er ror: 403 Forbidden"
Trying other mirror.
Error: Cannot retrieve repository metadata (repomd.xml) for repository: home_ooj ah_mqtt. Please verify its path and try again
Configuring for:
PHP Api Version: 20090626
Zend Module Api No: 20090626
Zend Extension Api No: 220090626
checking for grep that handles long lines and -e... /bin/grep
checking for egrep... /bin/grep -E
checking for a sed that does not truncate output... /bin/sed
checking for cc... cc
checking for C compiler default output file name... a.out
checking whether the C compiler works... yes
checking whether we are cross compiling... no
checking for suffix of executables...
checking for suffix of object files... o
checking whether we are using the GNU C compiler... yes
checking whether cc accepts -g... yes
checking for cc option to accept ISO C89... none needed
checking how to run the C preprocessor... cc -E
checking for icc... no
checking for suncc... no
checking whether cc understands -c and -o together... yes
checking for system library directory... lib
checking if compiler supports -R... no
checking if compiler supports -Wl,-rpath,... yes
checking build system type... x86_64-unknown-linux-gnu
checking host system type... x86_64-unknown-linux-gnu
checking target system type... x86_64-unknown-linux-gnu
checking for PHP prefix... /usr
checking for PHP includes... -I/usr/include/php -I/usr/include/php/main -I/usr/i nclude/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/ph p/ext/date/lib
checking for PHP extension directory... /usr/lib64/php/modules
checking for PHP installed headers prefix... /usr/include/php
checking if debug is enabled... no
checking if zts is enabled... no
checking for re2c... no
configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers.
checking for gawk... gawk
checking for mosquitto support... yes, shared
checking for mosquitto files in default path... not found
configure: error: Please reinstall the mosquitto distribution
make: *** Keine Targets angegeben und keine »make«-Steuerdatei gefunden. Schlus s.
make: *** Keine Regel, um »install« zu erstellen. Schluss.
Edomi schreibt im Fehler log nach dem Start fogendes
Eine Alternative wäre natürlich noch, ein eigenes Queuing für LBS mit EXEC-Teil zu implementieren, um so sicherzustellen, dass das Edomi Queuing nicht überlastet wird(siehe Edomi LBS Funktionsreferenz zu logic_setOutputQueued()), indem reinkommende Daten einfach ausgebremst werden und nur mit vorgegebender Geschwindigkeit an Edomi weitergereicht werden.
Eigentlich sollte das ganz einfach funktionieren:
1. Wie von dir beschrieben logic_setOutputQueued() einseten
2. Ein usleep() mit konfigurierbarer Zeit in die message() Funktion nach den logic_setOutputQueued() statements. Derzeit ist nur ein statisches usleep(50000) in der Hauptschleife, was ggf. zu kurz ist.
Das eigentliche Queueing wird ja von der mosquitto library gemacht und mit dem loop() stellt man sicher, dass alles empfangenen Nachrichten auch abgearbeitet werden. Auf Basis der kürzlich gemachten Erfahrungen würde ich das loop(100) am Ende der Hauptschleife ggf. durch ein loop(10) ersetzen.
Werde das nach meinem Urlaub mal ainbauen und dann als Update hochladen.
Hast du mal das letzte Update des Publish Servers getestet? Funktioniert dies jetzt bei Dir ohne Verzögerungen?
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.
Einen Kommentar schreiben: