Seite 3 von 10

Re: Openhab mit Visual Studio Code

Verfasst: 2. Dez 2020 08:44
von Philipp00
Es Funktioniert soweit alles bis auf die Fehlermeldung im Things file, könnt ihr euch diese erklären?

Re: Openhab mit Visual Studio Code

Verfasst: 2. Dez 2020 12:02
von peter-pan
Wie heisst denn die Fehlermeldung ?

Ist es richtig, dass der (Samba-)Zugriff jetzt klappt ?

Hast du schon mal diese Version probiert ?:

Code: Alles auswählen

        Thing topic HT_Badklein "HT Bad klein" {
            Channels:
                Type number : HTBadklein "Bad klein" [stateTopic = "shellies/shellyht-957268/sensor/temperature", commandTopic = "shellies/shellyht-957268/sensor/temperature/command"]        
        }

Re: Openhab mit Visual Studio Code

Verfasst: 2. Dez 2020 13:05
von Philipp00
Mit deiner Version erhalte ich keine Fehlermeldung, was ist der Unterschied, wenn ich Fragen darf?

Nein die ganze Zurgriffgeschichte habe ich auch noch nicht im Griff, speziell ist das influxdb file auch nicht auf dem Raspi selber anpassen kann, erst wenn ich den Zugriff mit sudo nano /etc/openhab2/persistence/influxdb.persist kann ich änderungen vornehmen.

vielleicht noch zur Erklärung, ich habe den Openhab erst nachträglich auf dem Raspi installiert, sprich habe Zugangsdaten für Raspi und Zugangsdaten für den Openhab.

Re: Openhab mit Visual Studio Code

Verfasst: 2. Dez 2020 15:39
von peter-pan
Also wenn du "nano" als editor nimmst, bist du ja direkt auf deinem Pi und editierst von da aus.

Also du hast "openHAB" nachträglich, also manuell installiert (Welches Release/Version?). Wie heisst denn der User, den du dafür angelegt hast ? (Ich hoffe Udo liest mit, da gibt es nämlich noch einiges zu Beachten mit Berechtigungen, Gruppen, etc. und das kann der viel besser erklären.)

So nun zu deiner MQTT-Frage. Auch das hat Udo supertoll weiter vorne beschrieben.

Code: Alles auswählen

Thing <binding_id>:<type_id>:<bridge_id>:<thing_id> "Label"  (<binding_id>:<type_id>:<bridge_id>) @ "Location" [ <parameters> ]
Diese Schreibweise für ein Thing gilt für die getrennte Speicherung von Bridge und Things. Du hast da einen Mix aus den Möglichkeiten der Definition der Things gemacht.

Ich packe Bridge und Things immer zusammen und das sieht dann bei mir z.B. so aus:

Code: Alles auswählen

//https://openhabforum.de/viewtopic.php?f=15&t=970&start=20   // from Udo
//Bridge mqtt:broker:MosquittoMqttBroker "Mosquitto MQTT Broker" @ "MQTT2" 
//       ^    ^      ^                    ^                      ^ Zeige diese Bridge auf der Unterseite "MQTT2" in Paper UI Control
//       ^    ^      ^                    ^ Label der Bridge
//       ^    ^      ^ Name der Bridge
//       ^    ^ Art der Bridge
//       ^ Binding

Bridge mqtt:broker:hans "Mosquitto" [ host="localhost", port=1883, secure=false, clientID="OH2_hans" ]  
{
    Thing topic sp11102 "Gosund SP111 02"       @ "MQTT2" {
    Channels:
        Type switch : power     "Power "                 [ stateTopic="stat/gosundsp111_02/POWER", commandTopic="cmnd/gosundsp111_02/POWER" ]
        Type number : rssi      "WiFi Signal Strength"   [ stateTopic="tele/gosundsp111_02/STATE", transformationPattern="JSONPATH:$.Wifi.RSSI"]
        Type string : version   "Firmware Version    "   [ stateTopic="stat/gosundsp111_02/STATUS2", transformationPattern="JSONPATH:$.StatusFWR.Version"]
        Type switch : reachable "Reachable"              [ stateTopic="tele/gosundsp111_02/LWT",transformationPattern="MAP:reachable.map" ]
        Type string : hardware  "Chip Set            "   [ stateTopic="stat/gosundsp111_02/STATUS2", transformationPattern="JSONPATH:$.StatusFWR.Hardware"]
        Type string : ipaddress "IP Address          "   [ stateTopic="stat/gosundsp111_02/STATUS5", transformationPattern="JSONPATH:$.StatusNET.IPAddress"]
        Type number : powerload "Power load"             [ stateTopic="tele/gosundsp111_02/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Power"]
        Type number : voltage   "Line voltage"           [ stateTopic="tele/gosundsp111_02/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Voltage"]
        Type number : current   "Line current"           [ stateTopic="tele/gosundsp111_02/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Current"]
        Type number : total     "Total energy "          [ stateTopic="tele/gosundsp111_02/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Total"]
        Type number : totalday  "Total energy today"     [ stateTopic="tele/gosundsp111_02/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Today"]
        Type number : totalyest "Total energy yesterday" [ stateTopic="tele/gosundsp111_02/SENSOR", transformationPattern="JSONPATH:$.ENERGY.Yesterday"]
        Type string : ssid      "WiFi"                   [ stateTopic="tele/gosundsp111_02/STATE", transformationPattern="JSONPATH:$.Wifi.SSId"]
        Type datetime : time    "Time"                   [ stateTopic="tele/gosundsp111_02/STATE", transformationPattern="JSONPATH:$.Time"]
    }
//   GTags - Bluetooth Präsenz-Melder
    Thing topic presence "MQTT - Presence - GTags" {
    Channels:
        Type switch : GTag_1      "GTag 1"               [ stateTopic="home/presence/GTag_1/status" ]
        Type switch : GTag_2      "iTAG"                 [ stateTopic="home/presence/iTAG/status" ]
        Type switch : GTag_3      "GTag 3"               [ stateTopic="home/presence/GTag_3/status" ]
        Type switch : v10         "Tracker V10"          [ stateTopic="home/presence/V10/status" ]
        Type switch : v10_1       "Tracker V10_1"        [ stateTopic="home/presence/V10_1/status" ]
    }
}
Was die Shellies anbelangt kann ich dir wegen der Syntax nicht weiterhelfen, da ich keine im Einsatz habe. Was ist das für einer. Ist das ein Thermostat mit dem die Temperatur gemessen und geregelt werden kann ?

Re: Openhab mit Visual Studio Code

Verfasst: 2. Dez 2020 15:58
von Philipp00
Danke für dein Feedback, leider fällt es mir noch etwas schwer zu verstehen, welche Id, welche Bedeutung hat, vielleicht gibt es da irgendwo eine Erklärung

Code: Alles auswählen

Thing <binding_id>:<type_id>:<bridge_id>:<thing_id> "Label"  (<binding_id>:<type_id>:<bridge_id>) @ "Location" [ <parameters> ]

Wo kann ich das herausfinden?
Habe gemäss dieser Anleitug die Installation vorgenommen.
https://openhabdoc.readthedocs.io/de/latest/Raspberry/

Re: Openhab mit Visual Studio Code

Verfasst: 2. Dez 2020 16:14
von peter-pan
Das ist m.E. in OH nur sehr dürftig beschrieben.
aus dem ofiziellen Bereich, z.B.: hier und hier. Es gibt auch noch eie Seite bei "githab", aber die fnde ich grad nicht. Da musst du halt ein bisschen googeln. ;)

Re: Openhab mit Visual Studio Code

Verfasst: 2. Dez 2020 17:20
von Philipp00
OK, werde ich mal studierten.
Bezüglich der Freigaben habt ihr keine Idee mehr, oder Inputs?

Re: Openhab mit Visual Studio Code

Verfasst: 2. Dez 2020 20:39
von peter-pan
Philipp00 hat geschrieben: 2. Dez 2020 17:20 OK, werde ich mal studierten.
Also ich hab noch ein bisschen was gefunden.:
Hier, hier und hier.

Dann hab ich auch mal was ausprobiert und die zwei Arten von Things zu testen.
1. Bridge und Thing in einer Datei(xxx.things). Thing:

Code: Alles auswählen

    Thing topic s2007 "Sonoff S20 07"       @ "MQTT2" {
    Channels:
        Type switch : power     "Power "                 [ stateTopic="stat/schaltdose07/POWER", commandTopic="cmnd/schaltdose07/POWER" ]
        Type number : rssi      "WiFi Signal Strength"   [ stateTopic="tele/schaltdose07/STATE", transformationPattern="JSONPATH:$.Wifi.RSSI"]
        Type string : version   "Firmware Version    "   [ stateTopic="stat/schaltdose07/STATUS2", transformationPattern="JSONPATH:$.StatusFWR.Version"]
        Type switch : reachable "Reachable"              [ stateTopic="tele/schaltdose07/LWT",transformationPattern="MAP:reachable.map" ]
        Type string : hardware  "Chip Set            "   [ stateTopic="stat/schaltdose07/STATUS2", transformationPattern="JSONPATH:$.StatusFWR.Hardware"]
        Type string : ipaddress "IP Address          "   [ stateTopic="stat/schaltdose07/STATUS5", transformationPattern="JSONPATH:$.StatusNET.IPAddress"]
    }
2. Bridge(xxx.things) und Thing(yyy.things) in unterschiedlichen Dateien:

Code: Alles auswählen

    Thing mqtt:topic:hans:s2007 "Sonoff S20 07"  (mqtt:broker:hans )     @ "MQTT2" {
    Channels:
        Type switch : power     "Power "                 [ stateTopic="stat/schaltdose07/POWER", commandTopic="cmnd/schaltdose07/POWER" ]
        Type number : rssi      "WiFi Signal Strength"   [ stateTopic="tele/schaltdose07/STATE", transformationPattern="JSONPATH:$.Wifi.RSSI"]
        Type string : version   "Firmware Version    "   [ stateTopic="stat/schaltdose07/STATUS2", transformationPattern="JSONPATH:$.StatusFWR.Version"]
        Type switch : reachable "Reachable"              [ stateTopic="tele/schaltdose07/LWT",transformationPattern="MAP:reachable.map" ]
        Type string : hardware  "Chip Set            "   [ stateTopic="stat/schaltdose07/STATUS2", transformationPattern="JSONPATH:$.StatusFWR.Hardware"]
        Type string : ipaddress "IP Address          "   [ stateTopic="stat/schaltdose07/STATUS5", transformationPattern="JSONPATH:$.StatusNET.IPAddress"]
    }
Du siehst, dass sich er Kopfteil des Things etwas unterscheidet, da im zweiten Beispiel, dass Thing die Bridgedaten auch vorhalten muss.
Philipp00 hat geschrieben: 2. Dez 2020 17:20 Bezüglich der Freigaben habt ihr keine Idee mehr, oder Inputs?
Was gibt es für User und Groups auf deinem Pi ? Das hatten Udo und ich dich ja bereits schon mal gefragt.

Stell mal fest was für User und Gruppen gibt:

Code: Alles auswählen

[20:22:17] openhabian@openHABPi:~$ users
openhabian
[20:22:35] openhabian@openHABPi:~$ groups
openhabian adm tty dialout cdrom sudo audio video plugdev games users input netdev bluetooth openhab gpio i2c spi
[20:22:44] openhabian@openHABPi:~$ groups openhabian
openhabian : openhabian adm tty dialout cdrom sudo audio video plugdev games users input netdev bluetooth spi i2c gpio openhab
[20:29:08] openhabian@openHABPi:~$
und schau auch mal hier.

Re: Openhab mit Visual Studio Code

Verfasst: 2. Dez 2020 21:06
von udo1toni
Samba Freigaben...

Da Du openHAB nachträglich installiert hast, gehe ich mal davon aus, dass Du die Samba Freigabe selbst eingerichtet hast.
Der Ordner /etc/openhab2 (das wäre bei einer apt Installation der Ort, wo sich alles abspielt) gehört normalerweise dem User openhab, unter dem openHAB gewöhnlich läuft.
Du kannst diesen User auch verwenden, um mit Samba zuzugreifen (das wäre der einfachste Weg...), indem Du mittels

Code: Alles auswählen

sudo smbpasswd -a openhab

den User als gültigen Sambauser anlegst und auch gleich das Samba Passwort setzt.
Dann muss natürlich der User auch Schreibzugriff auf das Share haben, genauso wie er Schreibrechte im Dateisystem haben muss.
Zu guter Letzt muss der Zugriff auf das Share in Windows über diesen User geschehen.

Die IDs sind schnell beschrieben...

Code: Alles auswählen

Bridge <binding_id>:<type_id>:<bridge_id> "Label" @ "Location" [ <parameters> ] {
    Thing <type_id> <thing_id> "Label" @ "Location" [ <parameters> ] {
    Channels:
        Type <channeltype> : <channel-id> "Label" [ <parameters> ]
    }
}
<binding_id> steht für das Binding, also z.B. mqtt
<type_id> steht für den hier definierten Typ, im Falle einer mqtt Bridge ist das broker, weil die Briddge die Verbindung zum Broker herstellt.
die Type ID ist abhängig vom Binding, man muss also in der Doku zum Binding nachschauen, um zu erfahren, welche Type IDs zur Verfügung stehen.
<bridge_id> ist schließlich der Name (Identifier) exakt dieser Bridge. Man kann beliebig viele Bridges parallel zueinander nutzen, und diese unterscheiden sich dann eben nur durch diesen Namen.
Label ist das Label, unter dem die Bridge (die auch nur ein besonderes Thing ist) in der Liste der Things auftaucht.
Location ist schließlich der "Karteireiter" (Bereich) in Paper UI control, unter dem das Thing gelistet wird, falls es sichtbar ist. Das ist für Bridges meist nicht der Fall, es kann aber Ausnahmen geben, und wir reden hier ja von der allgemeinen Form der Definition, die für alle Things gleich ist.
Im Thing gibt es ebenfalls die <type_id>, die im Fall von mqtt topic heißt.
<thing_id> ist entsprechend der Name (Identifier) exakt dieses Things. Unterhalb einer Bridge können beliebig viele Things angelegt werden, aber jedes Thing muss einen eigenen Namen haben. Unterhalb unterschiedlicher Bridges können die Things aber durchaus identische Namen haben, denn das Thing wird immer über die UID angesprochen, die sich ja dann durch den Namen der Bridge unterscheidet.
Label und Location sind von der Funktion identisch zur Bridge, nur beziehen sie sich hier natürlich auf das Device.
<channeltype> kann z.B. switch sein. Welche channeltypes zur Verfügung stehen, hängt vom Binding ab.
<channel-id> ist (Du ahnst es schon) der Name (Identifier) exakt dieses Channels. Genau wie beim Thing müssen sich alle Channel-ids eines Things unterscheiden, jedoch darf dieselbe Channel-id in verschiedenen Things verwendet werden, denn auch der Channel wird immer über die UID angesprochen, die auch Bridge und Thing ID enthält.
Label ist das Label des Channels...

Die möglichen Parameter sind hochgradig abhängig vom Binding und sind natürlich aus der Dokumentation ersichtlich.

Re: Openhab mit Visual Studio Code

Verfasst: 3. Dez 2020 10:37
von Philipp00
Ganz kann ich dir mit der Freigabe noch nicht folgen, sry, und aus den Anleitungen über Google werde ich auch nicht schlauer.
Habe mal das smb.conf file untern eingefügt, evtl. könnt ihr daraus etwas interpretieren.



Code: Alles auswählen

#


# Sample configuration file for the Samba suite for Debian GNU/Linux.
#
#
# This is the main Samba configuration file. You should read the
# smb.conf(5) manual page in order to understand the options listed
# here. Samba has a huge number of configurable options most of which 
# are not shown in this example
#
# Some options that are often worth tuning have been included as
# commented-out examples in this file.
#  - When such options are commented with ";", the proposed setting
#    differs from the default Samba behaviour
#  - When commented with "#", the proposed setting is the default
#    behaviour of Samba but the option is considered important
#    enough to be mentioned here
#
# NOTE: Whenever you modify this file you should run the command
# "testparm" to check that you have not made any basic syntactic 
# errors. 

#======================= Global Settings =======================

[global]

## Browsing/Identification ###

# Change this to the workgroup/NT-domain name your Samba server will part of
   workgroup = WORKGROUP

#### Networking ####

# The specific set of interfaces / networks to bind to
# This can be either the interface name or an IP address/netmask;
# interface names are normally preferred
;   interfaces = 127.0.0.0/8 eth0

# Only bind to the named interfaces and/or networks; you must use the
# 'interfaces' option above to use this.
# It is recommended that you enable this feature if your Samba machine is
# not protected by a firewall or is a firewall itself.  However, this
# option cannot handle dynamic or non-broadcast interfaces correctly.
;   bind interfaces only = yes



#### Debugging/Accounting ####

# This tells Samba to use a separate log file for each machine
# that connects
   log file = /var/log/samba/log.%m

# Cap the size of the individual log files (in KiB).
   max log size = 1000

# We want Samba to only log to /var/log/samba/log.{smbd,nmbd}.
# Append syslog@1 if you want important messages to be sent to syslog too.
   logging = file

# Do something sensible when Samba crashes: mail the admin a backtrace
   panic action = /usr/share/samba/panic-action %d


####### Authentication #######

# Server role. Defines in which mode Samba will operate. Possible
# values are "standalone server", "member server", "classic primary
# domain controller", "classic backup domain controller", "active
# directory domain controller". 
#
# Most people will want "standalone server" or "member server".
# Running as "active directory domain controller" will require first
# running "samba-tool domain provision" to wipe databases and create a
# new domain.
   server role = standalone server

   obey pam restrictions = yes

# This boolean parameter controls whether Samba attempts to sync the Unix
# password with the SMB password when the encrypted SMB password in the
# passdb is changed.
   unix password sync = yes

# For Unix password sync to work on a Debian GNU/Linux system, the following
# parameters must be set (thanks to Ian Kahan <<kahan@informatik.tu-muenchen.de> for
# sending the correct chat script for the passwd program in Debian Sarge).
   passwd program = /usr/bin/passwd %u
   passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .

# This boolean controls whether PAM will be used for password changes
# when requested by an SMB client instead of the program listed in
# 'passwd program'. The default is 'no'.
   pam password change = yes

# This option controls how unsuccessful authentication attempts are mapped
# to anonymous connections
   map to guest = bad user

########## Domains ###########

#
# The following settings only takes effect if 'server role = primary
# classic domain controller', 'server role = backup domain controller'
# or 'domain logons' is set 
#

# It specifies the location of the user's
# profile directory from the client point of view) The following
# required a [profiles] share to be setup on the samba server (see
# below)
;   logon path = \\%N\profiles\%U
# Another common choice is storing the profile in the user's home directory
# (this is Samba's default)
#   logon path = \\%N\%U\profile

# The following setting only takes effect if 'domain logons' is set
# It specifies the location of a user's home directory (from the client
# point of view)
;   logon drive = H:
#   logon home = \\%N\%U

# The following setting only takes effect if 'domain logons' is set
# It specifies the script to run during logon. The script must be stored
# in the [netlogon] share
# NOTE: Must be store in 'DOS' file format convention
;   logon script = logon.cmd

# This allows Unix users to be created on the domain controller via the SAMR
# RPC pipe.  The example command creates a user account with a disabled Unix
# password; please adapt to your needs
; add user script = /usr/sbin/adduser --quiet --disabled-password --gecos "" %u

# This allows machine accounts to be created on the domain controller via the 
# SAMR RPC pipe.  
# The following assumes a "machines" group exists on the system
; add machine script  = /usr/sbin/useradd -g machines -c "%u machine account" -d /var/lib/samba -s /bin/false %u

# This allows Unix groups to be created on the domain controller via the SAMR
# RPC pipe.  
; add group script = /usr/sbin/addgroup --force-badname %g

############ Misc ############

# Using the following line enables you to customise your configuration
# on a per machine basis. The %m gets replaced with the netbios name
# of the machine that is connecting
;   include = /home/samba/etc/smb.conf.%m

# Some defaults for winbind (make sure you're not using the ranges
# for something else.)
;   idmap config * :              backend = tdb
;   idmap config * :              range   = 3000-7999
;   idmap config YOURDOMAINHERE : backend = tdb
;   idmap config YOURDOMAINHERE : range   = 100000-999999
;   template shell = /bin/bash

# Setup usershare options to enable non-root users to share folders
# with the net usershare command.

# Maximum number of usershare. 0 means that usershare is disabled.
#   usershare max shares = 100

# Allow users who've been granted usershare privileges to create
# public shares, not just authenticated ones
   usershare allow guests = yes

#======================= Share Definitions =======================

[homes]
   comment = Home Directories
   browseable = no

# By default, the home directories are exported read-only. Change the
# next parameter to 'no' if you want to be able to write to them.
   read only = yes

# File creation mask is set to 0700 for security reasons. If you want to
# create files with group=rw permissions, set next parameter to 0775.
   create mask = 0700

# Directory creation mask is set to 0700 for security reasons. If you want to
# create dirs. with group=rw permissions, set next parameter to 0775.
   directory mask = 0700

# By default, \\server\username shares can be connected to by anyone
# with access to the samba server.
# The following parameter makes sure that only "username" can connect
# to \\server\username
# This might need tweaking when using external authentication schemes
   valid users = %S

# Un-comment the following and create the netlogon directory for Domain Logons
# (you need to configure Samba to act as a domain controller too.)
;[netlogon]
;   comment = Network Logon Service
;   path = /home/samba/netlogon
;   guest ok = yes
;   read only = yes

# Un-comment the following and create the profiles directory to store
# users profiles (see the "logon path" option above)
# (you need to configure Samba to act as a domain controller too.)
# The path below should be writable by all users so that their
# profile directory may be created the first time they log on
;[profiles]
;   comment = Users profiles
;   path = /home/samba/profiles
;   guest ok = no
;   browseable = no
;   create mask = 0600
;   directory mask = 0700

[printers]
   comment = All Printers
   browseable = no
   path = /var/spool/samba
   printable = yes
   guest ok = no
   read only = yes
   create mask = 0700

# Windows clients look for this share name as a source of downloadable
# printer drivers
[print$]
   comment = Printer Drivers
   path = /var/lib/samba/printers
   browseable = yes
   read only = yes
   guest ok = no
# Uncomment to allow remote administration of Windows print drivers.
# You may need to replace 'lpadmin' with the name of the group your
# admin users are members of.
# Please note that you also need to set appropriate Unix permissions
# to the drivers directory for these users to have write rights in it
;   write list = root, @lpadmin

[global]
   security = user




[openHAB2-userdata]

 comment= openHAB Userdaten

 path=/var/lib/openhab2

 browseable=Yes

 writeable=Yes

 only guest=no

 public=no

 create mask=0777

 directory mask=0777



[openHAB2-conf]

 comment= openHAB Konfiguration

 path=/etc/openhab2

 browseable=Yes

 writeable=Yes

 only guest=no

 public=no

 create mask=0777

 directory mask=0777


[OpenHAB]

   path = /etc/openhab/configurations

   writable = yes

   browseable = yes

   read only = no

   create mask = 0700

   directory mask = 0700

   guest ok = yes

   public = no

   force group = openhab

   force user = openhab