home-assistant / core

:house_with_garden: Open source home automation that puts local control and privacy first.
https://www.home-assistant.io
Apache License 2.0
73.98k stars 31.02k forks source link

Camera Stream No Longer Works #85280

Closed DevDylanB closed 1 year ago

DevDylanB commented 1 year ago

The problem

I'm assuming when the integration polls the api for the sensor data it is assuming that the camera stream is on the same port at the Octoprint instance. For those not running their instances on a Raspberry pi this typically isn't the case. I'm running MJPG streamer on ubuntu server. The stream works great in Octoprint, but home assistant fails to retrieve the correct port. My octoprint instance runs on :5000 while my camera stream is on :8080, but the set up wizard doesn't get that information. So, the camera entity is stuck on state Idle while the feed says, "Preview of the octoprint camera".

Using a generic camera will show the stream snapshot, but fails to render the live stream.

What version of Home Assistant Core has the issue?

2023.1.0

What was the last working version of Home Assistant Core?

2022.12

What type of installation are you running?

Home Assistant OS

Integration causing the issue

Octoprint

Link to integration documentation on our website

https://www.home-assistant.io/integrations/octoprint/

Diagnostics information

home-assistant_octoprint_2023-01-06T03-37-51.433Z.log

Example YAML snippet

No response

Anything in the logs that might be useful for us?

2023-01-05 21:24:52.437 INFO (MainThread) [homeassistant.helpers.entity_registry] Registered new camera.octoprint entity: camera.octoprint_camera
2023-01-05 21:24:53.192 WARNING (MainThread) [homeassistant.components.cloud.google_config] Error reporting state - 5: Requested entity was not found.
2023-01-05 21:25:02.138 ERROR (MainThread) [frontend.js.latest.202301040] http://homeassistant.local:8123/frontend_latest/app.c7254a29.js:850:0 Error: Failed to execute 'define' on 'CustomElementRegistry': the name "button-card-action-handler" has already been used with this registry
2023-01-05 21:25:14.312 INFO (MainThread) [homeassistant.components.websocket_api.http.connection] [546872166240] Connection closed by client

Additional information

I have deleted the integration several times as well as multiple reboots and defining the camera manually in camera.yaml If this is an error on my end I apologize in advance, but my camera stream was working for days up until now. If it is an error on my end, anything ideas would be greatly appreciated.

home-assistant[bot] commented 1 year ago

Hey there @rfleming71, mind taking a look at this issue as it has been labeled with an integration (octoprint) you are listed as a code owner for? Thanks!

Code owner commands Code owners of `octoprint` can trigger bot actions by commenting: - `@home-assistant close` Closes the issue. - `@home-assistant rename Awesome new title` Change the title of the issue. - `@home-assistant reopen` Reopen the issue. - `@home-assistant unassign octoprint` Removes the current integration label and assignees on the issue, add the integration domain after the command.

(message by CodeOwnersMention)


octoprint documentation octoprint source (message by IssueLinks)

DevDylanB commented 1 year ago

Can confirm that adding a MJPEG camera through the official integration works. So it seems to be something regarding the stream URL being different. I removed haproxy on my linux server just to make sure that wasn't causing issues, but the camera feed was still dead in the Octoprint integration. I also attempted to use haproxy to forward Octoprint and the camera stream to port 80 (in the event the setup wizard was assuming that both would be on the same port). That was also unsuccessful.

rfleming71 commented 1 year ago

Could you login to your octoprint instance then navigate to /api/settings and paste either the webcam portion of it or the entire blob(This may be large depending on what you have enabled)?

DevDylanB commented 1 year ago

{"api":{"allowCrossOrigin":true,"key":"xxxxxxxxxxxxxxx"},"appearance":{"closeModalsWithClick":true,"color":"default","colorIcon":true,"colorTransparent":false,"defaultLanguage":"_default","fuzzyTimes":true,"name":"PrintBot","showFahrenheitAlso":false,"showInternalFilename":true},"devel":{"pluginTimings":false},"feature":{"autoUppercaseBlacklist":["M117","M118"],"g90InfluencesExtruder":false,"keyboardControl":true,"modelSizeDetection":true,"pollWatched":false,"printCancelConfirmation":true,"printStartConfirmation":true,"rememberFileFolder":false,"sdSupport":true,"temperatureGraph":true,"uploadOverwriteConfirmation":true},"folder":{"timelapse":"/home/pi/.octoprint/timelapse","uploads":"/home/pi/.octoprint/uploads","watched":"/home/pi/.octoprint/watched"},"gcodeAnalysis":{"bedZ":0.0,"runAt":"idle"},"plugins":{"BLTouch":{"cmdProbeBed":"G29","cmdProbeDown":"M280 P0 S10","cmdProbeUp":"M280 P0 S90","cmdReleaseAlarm":"M280 P0 S160","cmdRepeatability":"","cmdSaveSettings":"M500","cmdSelfTest":"M280 P0 S120","confirmation":true},"DisplayLayerProgress":{"addLayerIndicators":true,"addTrailingChar":false,"appendActualBedTempBrowserTitle":false,"appendTargetBedTempBrowserTitle":false,"browserTitleMessagePattern":"[progress]% [estimated_end_time] ([printer_state])","browserTitleMode":"overwrite","currentTimeFormat":"HH:mm","debuggingEnabled":false,"etaFormat":"%H:%M","excludeFolders":false,"excludeFoldersExpression":"","feedrateFactor":"1.0","feedrateFormat":"{:.2f}","heightFormat":"{:.1f}","installed_version":"1.28.0","layerAverageDurationCount":5,"layerAverageFormatPattern":"{H}h:{M:02}m:{S:02}s","layerExpressions":"1\t\t[;\\s*LAYER:\\s*([0-9]+).*]\t\tCURA\r\n1\t\t[; layer ([0-9]+),.*]\t\tSimplify3D\r\n1\t\t[;LAYER:([0-9]+).*]\t\tideaMaker\r\ncount\t[; BEGIN_LAYER_OBJECT.*]\t\tKISSlicer\r\ncount\t[;BEFORE_LAYER_CHANGE]\t\tSlic3r\r\ncount\t[;LAYER_CHANGE]\t\tPrusa","layerIndicatorLookAheadLimit":750,"layerOffset":0,"navBarMessagePattern":"Progress: <span style='display: inline-block;width:24px;'>[progress]%</span>\nLayer: <span style='display: inline-block;width:24px;'>[current_layer]</span> of\n<span style='display: inline-block;width:24px;'>[total_layers]</span>\nHeight: <span style='display: inline-block;width:42px;'>[current_height]</span> of\n<span style='display: inline-block;width:42px;'>[total_height]</span>mm","printTimeLeftWithoutSeconds":true,"printerDisplayMessagePattern":"[progress]% L=[current_layer]/[total_layers]","printerDisplayOutputInterval":0,"printerDisplayScreenLocation":"\"dir1\": \"up\", \"dir2\": \"right\", \"firstpos1\": 40, \"firstpos2\": 10, \"spacing1\": 0, \"spacing2\": 0","printerDisplayScreenLocationClass":"stack-bottomleft","printerDisplayWidth":"15%","secondPrinterDisplayMessagePattern":"H=[current_height]/[total_height]","sendLayerInformationsViaWebSocket":true,"showAllPrinterMessages":true,"showMissingLayerIndicatorWarning":true,"showOnBrowserTitle":true,"showOnFileListView":true,"showOnNavBar":true,"showOnPrinterDisplay":true,"showOnState":true,"showTimeInNavBar":false,"stateMessagePattern":"<span title='Might be inaccurate!'>Current Height</span>: <strong id='state_height_message'>[current_height] / [total_height]mm</strong>\n<i class='fa fa-spinner fa-spin dlp-state-busyIndicator' style='display:none'></i>\n<br>\n<span title='Shows the layer information'>Layer</span>: <strong id='state_layer_message'>[current_layer] / [total_layers]</strong>\n<i class='fa fa-spinner fa-spin dlp-state-busyIndicator' style='display:none'></i>\n<br>\n","timeInNavBarPosition":"right","toggleDisplayDelay":3,"togglePrinterDisplayEnabled":false,"updatePrinterDisplayWhilePrinting":false},"PrintTimeGenius":{"allowAnalysisWhileHeating":true,"allowAnalysisWhilePrinting":false,"analyzers":[{"command":"\"/home/pi/OctoPrint/venv/bin/python3\" \"/home/pi/OctoPrint/venv/lib/python3.10/site-packages/octoprint_PrintTimeGenius/analyzers/analyze_gcode_comments.py\" \"{gcode}\"","description":"All gcode analyzers (usually not as good as marlin-calc)","enabled":false},{"command":"\"/home/pi/OctoPrint/venv/bin/python3\" \"/home/pi/OctoPrint/venv/lib/python3.10/site-packages/octoprint_PrintTimeGenius/analyzers/analyze_progress.py\" marlin-calc \"{gcode}\" \"{mcodes}\"","description":"Marlin firmware simulation (replaces Octoprint built-in, faster and more accurate)","enabled":true},{"command":"\"/home/pi/OctoPrint/venv/bin/python3\" \"/home/pi/OctoPrint/venv/lib/python3.10/site-packages/octoprint_PrintTimeGenius/analyzers/analyze_gcode_comments.py\" \"{gcode}\" --parsers slic3r_pe_print_time slic3r_pe_print_time_remaining","description":"Use Slic3r PE M73 time remaining","enabled":false}],"bedZ":0,"compensationValues":{"cooling":null,"extruding":1.0,"heating":null},"enableOctoPrintAnalyzer":false,"exactDurations":true,"showStars":true},"action_command_notification":{"enable":true,"enable_popups":false},"action_command_prompt":{"command":"M876","enable":"detected","enable_emergency_sending":true,"enable_signal_support":true},"announcements":{"channel_order":["_important","_releases","_blog","_plugins","_octopi"],"channels":{"_blog":{"description":"Development news, community spotlights, OctoPrint On Air episodes and more from the official OctoBlog.","name":"On the OctoBlog","priority":2,"read_until":1670938200,"type":"rss","url":"https://octoprint.org/feeds/octoblog.xml"},"_important":{"description":"Important announcements about OctoPrint.","name":"Important Announcements","priority":1,"read_until":1521111600,"type":"rss","url":"https://octoprint.org/feeds/important.xml"},"_octopi":{"description":"News around OctoPi, the Raspberry Pi image including OctoPrint.","name":"OctoPi News","priority":2,"read_until":1670518800,"type":"rss","url":"https://octoprint.org/feeds/octopi.xml"},"_plugins":{"description":"Announcements of new plugins released on the official Plugin Repository.","name":"New Plugins in the Repository","priority":2,"read_until":1672812000,"type":"rss","url":"https://plugins.octoprint.org/feed.xml"},"_releases":{"description":"Announcements of new releases and release candidates of OctoPrint.","name":"Release Announcements","priority":2,"read_until":1666085100,"type":"rss","url":"https://octoprint.org/feeds/releases.xml"}},"display_limit":3,"enabled_channels":["_important","_releases","_blog","_plugins","_octopi"],"forced_channels":["_important"],"summary_limit":300,"ttl":360},"backup":{"restore_unsupported":false},"bedlevelvisualizer":{"camera_position":"-1.25,-1.25,0.25","colorscale":"[[0, \"rebeccapurple\"],[0.4, \"rebeccapurple\"],[0.45, \"blue\"],[0.5, \"green\"],[0.55, \"yellow\"],[0.6, \"red\"],[1, \"red\"]]","command":"M140 S60 ; starting by heating the bed for nominal mesh accuracy\nM117 Homing all axes ; send message to printer display\nG28 ; home all axes\nM420 S0 ; Turning off bed leveling while probing, if firmware is set\n ; to restore after G28\nM117 Heating the bed ; send message to printer display\nM190 S60 ; waiting until the bed is fully warmed up\nM300 S1000 P500 ; chirp to indicate bed mesh levels is initializing\nM117 Creating the bed mesh levels ; send message to printer display\nM155 S400 ; reduce temperature reporting rate to reduce output pollution\n@BEDLEVELVISUALIZER\t; tell the plugin to watch for reported mesh\nG29 T\t ; run bilinear probing\nM155 S3 ; reset temperature reporting\nM140 S0 ; cooling down the bed\nM500 ; store mesh in EEPROM\nM300 S440 P200 ; make calibration completed tones\nM300 S660 P250\nM300 S880 P300\nM117 Bed mesh levels completed ; send message to printer display\n","commands":[],"date_locale_format":"","debug_logging":false,"descending_x":false,"descending_y":true,"flipX":false,"flipY":false,"graph_height":"450px","graph_z_limits":"-2,2","ignore_correction_matrix":false,"imperial":false,"mesh_timestamp":"1/4/2023, 12:19:25 PM","mesh_unit":1,"reverse":false,"rotation":0,"save_mesh":true,"save_snapshots":false,"screw_hub":0.5,"show_labels":true,"show_prusa_adjustments":false,"show_stored_mesh_on_tab":true,"show_webcam":false,"showdegree":true,"stored_mesh":[["+0.030","+0.031","+0.038","+0.026","+0.100"],["-0.038","-0.026","-0.029","-0.015","+0.052"],["-0.068","-0.045","-0.056","-0.042","+0.034"],["-0.007","-0.029","-0.071","-0.086","-0.063"],["+0.111","+0.034","-0.040","-0.055","-0.065"]],"stored_mesh_x":[0,55,110,165,220],"stored_mesh_y":[0,55,110,165,220],"stored_mesh_z_height":250,"stripFirst":false,"timeout":1800,"use_center_origin":false,"use_relative_offsets":false},"dashboard":{"ETAShowDate":true,"ETAShowSeconds":false,"ETAUse12HTime":false,"_webcamArray":[{"disableNonce":false,"flipH":false,"flipV":false,"name":"Default","rotate":false,"streamRatio":"16:9","url":"http://192.168.68.95:8080?action=stream"}],"bedTempMax":"100","chamberTempMax":"50","clearOn_Feedrate":"2","clearOn_Filament":"2","clearOn_LayerGraph":"1","clearOn_PrintThumbnail":"2","clearOn_PrinterMessage":"2","clearOn_ProgressGauges":2,"commandWidgetArray":[{"command":"echo \"47.6\" | bc","enabled":false,"icon":"command-icon.png","interval":"60","name":"Simulated Chamber","type":"3/4"}],"cpuTempCriticalThreshold":"85","cpuTempWarningThreshold":"70","dashboardOverlayFull":false,"defaultWebcam":0,"disableWebcamNonce":false,"enableDashMultiCam":false,"enableTempGauges":true,"enclosureGaugeStyle":"3/4","feedrateMax":200,"fsCommandWidgets":true,"fsFan":true,"fsFeedrate":true,"fsFilament":true,"fsJobControlButtons":false,"fsLayerGraph":false,"fsPrintThumbnail":true,"fsPrinterMessage":true,"fsProgressGauges":true,"fsSensorInfo":true,"fsSystemInfo":true,"fsTempGauges":true,"fsWebCam":true,"fullscreenUseThemeColors":false,"gaugetype":"circle","hideHotend":false,"hotendTempMax":"300","layerGraphType":"normal","layerIndicatorArray":[{"regx":"^;LAYER:([0-9]+)","slicer":"CURA"},{"regx":"^; layer ([0-9]+)","slicer":"Simplify3D"},{"regx":"^;BEFORE_LAYER_CHANGE","slicer":"Slic3r/PrusaSlicer"},{"regx":"^;(( BEGIN_|BEFORE_)+LAYER_(CHANGE|OBJECT)|LAYER:[0-9]+| [<]{0,1}layer [0-9]+[>,]{0,1}).*$","slicer":"Almost Everyone"}],"printingOnly_CommandWidgets":false,"printingOnly_Fan":false,"printingOnly_Feedrate":true,"printingOnly_Filament":true,"printingOnly_JobControlButtons":false,"printingOnly_LayerGraph":true,"printingOnly_PrinterMessage":true,"printingOnly_ProgressGauges":true,"printingOnly_SensorInfo":false,"printingOnly_SystemInfo":false,"printingOnly_TempGauges":false,"printingOnly_WebCam":false,"showCommandWidgets":false,"showFan":true,"showFeedrate":false,"showFilament":true,"showFilamentChangeTime":true,"showFullscreen":true,"showHeightProgress":false,"showJobControlButtons":false,"showLayerGraph":false,"showLayerProgress":false,"showPrintThumbnail":true,"showPrinterMessage":false,"showProgress":true,"showSensorInfo":false,"showSystemInfo":false,"showTempGaugeColors":false,"showTimeProgress":true,"showWebCam":false,"targetTempDeviation":"10","temperatureTicks":"0","useThemeifyColor":true},"discovery":{"addresses":null,"httpPassword":null,"httpUsername":null,"ignoredAddresses":null,"ignoredInterfaces":null,"interfaces":null,"model":{"description":null,"name":null,"number":null,"serial":null,"url":null,"vendor":null,"vendorUrl":null},"pathPrefix":null,"publicHost":null,"publicPort":null,"upnpUuid":"f742cd75-58d1-4404-9c17-603c212cfb27","zeroConf":[]},"errortracking":{"enabled":true,"enabled_unreleased":false,"unique_id":"08c0baec-f1cb-40b8-a22a-b1d6ef502ebc","url_coreui":"https://be7a53389fb045b48d6c384bb8ee89eb@o118517.ingest.sentry.io/1374096","url_server":"https://faa02914ec8f42139e12a36482cfdb60@o118517.ingest.sentry.io/1373987"},"eventmanager":{"availableEvents":["Startup","Shutdown","ConnectivityChanged","Connecting","Connected","Disconnecting","Disconnected","PrinterStateChanged","PrinterReset","ClientOpened","ClientClosed","ClientAuthed","ClientDeauthed","UserLoggedIn","UserLoggedOut","Upload","FileSelected","FileDeselected","UpdatedFiles","MetadataAnalysisStarted","MetadataAnalysisFinished","MetadataStatisticsUpdated","FileAdded","FileRemoved","FileMoved","FolderAdded","FolderRemoved","FolderMoved","TransferStarted","TransferDone","TransferFailed","PrintStarted","PrintDone","PrintFailed","PrintCancelling","PrintCancelled","PrintPaused","PrintResumed","Error","PowerOn","PowerOff","Home","ZChange","Waiting","Dwelling","Cooling","Alert","Conveyor","Eject","EStop","PositionUpdate","FirmwareData","ToolChange","RegisteredMessageReceived","CommandSuppressed","InvalidToolReported","FilamentChange","CaptureStart","CaptureDone","CaptureFailed","PostRollStart","PostRollEnd","MovieRendering","MovieDone","MovieFailed","SlicingStarted","SlicingDone","SlicingFailed","SlicingCancelled","SlicingProfileAdded","SlicingProfileModified","SlicingProfileDeleted","PrinterProfileAdded","PrinterProfileModified","PrinterProfileDeleted","SettingsUpdated","plugin_backup_backup_created","plugin_bedlevelvisualizer_mesh_data_collected","plugin_firmware_check_warning","plugin_pluginmanager_install_plugin","plugin_pluginmanager_uninstall_plugin","plugin_pluginmanager_enable_plugin","plugin_pluginmanager_disable_plugin","plugin_softwareupdate_update_succeeded","plugin_softwareupdate_update_failed"],"subscriptions":[]},"firmware_check":{"ignore_infos":true},"firmwareupdater":{"_plugin_version":"1.13.3","_profiles":{"_id":null,"_name":null,"avrdude_avrmcu":null,"avrdude_baudrate":null,"avrdude_commandline":"{avrdude} -v -q -p {mcu} -c {programmer} -P {port} -D -C {conffile} -b {baudrate} {disableverify} -U flash:w:{firmware}:i","avrdude_conf":null,"avrdude_disableverify":false,"avrdude_path":null,"avrdude_programmer":null,"bootcmdr_baudrate":115200,"bootcmdr_command_timeout":30,"bootcmdr_commandline":"{bootcommander} -d={port} -b={baudrate} {firmware}","bootcmdr_path":null,"bootcmdr_preflashreset":true,"bossac_commandline":"{bossac} -i -p {port} -U true -e -w {disableverify} -b {firmware} -R","bossac_disableverify":false,"bossac_path":null,"dfuprog_avrmcu":null,"dfuprog_commandline":"sudo {dfuprogrammer} {mcu} flash {firmware} --debug-level 10","dfuprog_erasecommandline":"sudo {dfuprogrammer} {mcu} erase --debug-level 10 --force","dfuprog_path":null,"dfuutil_commandline":"sudo {dfuutil} -a 0 -s 0x8000000:leave -D {firmware}","dfuutil_path":null,"disable_bootloadercheck":false,"enable_postflash_commandline":false,"enable_postflash_delay":false,"enable_postflash_gcode":false,"enable_preflash_commandline":false,"enable_preflash_delay":false,"enable_preflash_gcode":false,"flash_method":null,"last_url":null,"lpc1768_custom_filename":"firmware.bin","lpc1768_last_filename":null,"lpc1768_no_m997_reset_wait":false,"lpc1768_no_m997_restart_wait":false,"lpc1768_path":null,"lpc1768_preflashreset":true,"lpc1768_timestamp_filenames":false,"lpc1768_unmount_command":"sudo umount {mountpoint}","lpc1768_use_custom_filename":false,"marlinbft_alt_reset":false,"marlinbft_custom_filename":"firmware.bin","marlinbft_got_start":false,"marlinbft_last_filename":null,"marlinbft_m997_reset_wait":10,"marlinbft_m997_restart_wait":20,"marlinbft_no_m997_reset_wait":false,"marlinbft_no_m997_restart_wait":false,"marlinbft_progresslogging":false,"marlinbft_timeout":1000,"marlinbft_timestamp_filenames":false,"marlinbft_use_custom_filename":false,"marlinbft_waitafterconnect":0,"no_reconnect_after_flash":false,"postflash_commandline":null,"postflash_delay":0,"postflash_gcode":null,"preflash_commandline":null,"preflash_delay":3,"preflash_gcode":null,"run_postflash_gcode":false,"serial_port":null,"stm32flash_boot0low":false,"stm32flash_boot0pin":"rts","stm32flash_execute":true,"stm32flash_executeaddress":"0x8000000","stm32flash_path":null,"stm32flash_reset":false,"stm32flash_resetlow":true,"stm32flash_resetpin":"dtr","stm32flash_verify":true},"_selected_profile":0,"disable_filefilter":false,"enable_navbar":false,"enable_profiles":false,"has_bftcapability":false,"has_binproto2package":false,"last_bft_filenames":{},"maximum_fw_size_kb":5120,"prevent_connection_when_flashing":true,"profiles":[{"_id":0,"_name":"Default"}],"save_url":false},"gcodeviewer":{"mobileSizeThreshold":2097152,"sizeThreshold":20971520,"skipUntilThis":null},"pluginmanager":{"confirm_disable":true,"dependency_links":false,"hidden":[],"ignore_throttled":false,"notices":"https://plugins.octoprint.org/notices.json","notices_ttl":360,"pip_args":null,"pip_force_user":false,"repository":"https://plugins.octoprint.org/plugins.json","repository_ttl":1440},"prusaslicerthumbnails":{"align_inline_thumbnail":true,"filelist_height":"306","inline_thumbnail":true,"inline_thumbnail_align_value":"center","inline_thumbnail_position_left":true,"inline_thumbnail_scale_value":"25","installed":true,"resize_filelist":false,"scale_inline_thumbnail":true,"scale_inline_thumbnail_position":false,"state_panel_thumbnail":true,"state_panel_thumbnail_scale_value":"100","sync_on_refresh":true},"simpleemergencystop":{"big_button":false,"confirmationDialog":false,"emergencyGCODE":"M112"},"softwareupdate":{"cache_ttl":1440,"check_overlay_py2_url":"https://plugins.octoprint.org/update_check_overlay_py2.json","check_overlay_ttl":360,"check_overlay_url":"https://plugins.octoprint.org/update_check_overlay.json","credentials":{},"ignore_throttled":false,"minimum_free_storage":150,"notify_users":true,"octoprint_branch_mappings":[{"branch":"master","commitish":["master"],"name":"Stable"},{"branch":"rc/maintenance","commitish":["rc/maintenance"],"name":"Maintenance RCs"},{"branch":"rc/devel","commitish":["rc/maintenance","rc/devel"],"name":"Devel RCs"}],"octoprint_checkout_folder":null,"octoprint_method":"pip","octoprint_pip_target":"https://github.com/OctoPrint/OctoPrint/archive/{target_version}.zip","octoprint_release_channel":"master","octoprint_tracked_branch":null,"octoprint_type":"github_release","pip_command":null,"pip_enable_check":false,"queued_updates":[],"updatelog_cutoff":43200},"touchui":{"automaticallyLoadResolution":true,"automaticallyLoadTouch":true,"closeDialogsOutside":false,"colors":{"bgColor":"#000","customPath":"","fontSize":"16","mainColor":"#00B0FF","termColor":"#0F0","textColor":"#FFF","useLocalFile":false},"hasCustom":false,"hasVisibleSettings":true,"refreshCSS":false,"requireNewCSS":false,"useCustomization":false,"whatsNew":false},"tracking":{"enabled":true,"events":{"commerror":true,"plugin":true,"pong":true,"printer":true,"printer_safety_check":true,"printjob":true,"slicing":true,"startup":true,"throttled":true,"update":true,"webui_load":true},"ping":null,"pong":86400,"server":null,"unique_id":"883e5b93-57dc-4048-82e0-9d64ef432dc8"},"uicustomizer":{"addWebCamZoom":true,"centerTopIcons":true,"compactMenu":true,"compressTempControls":true,"customCSS":"","disableTermInactive":false,"filesFullHeight":true,"fixedFooter":true,"fixedHeader":true,"fluidLayout":true,"gcodeFullWidth":false,"gcodeZoom":3,"hideGraphBackground":true,"hideMainCam":false,"mainTabs":[["control_link",true,false,"fas fa-expand-arrows-alt",true,false],["temp_link",true,false,"fas fa-thermometer-half",true,false],["timelapse_link",true,false,"fas fa-film",true,false],["term_link",true,false,"fas fa-terminal",true,false],["gcode_link",true,false,"fab fa-codepen",true,false],["tab_plugin_dashboard_link",true,false,false,"textOnly","#000000"],["tab_plugin_bedlevelvisualizer_link",true,false,false,"textOnly","#000000"]],"mainTabsCustomize":true,"mainTabsIconSize":"","navbarplugintempfix":true,"responsiveMode":true,"rows":[{"_00#connection_wrapper":true,"_01#files_wrapper":true,"_02#sidebar_plugin_firmware_check_warning_wrapper":false,"_03#sidebar_plugin_firmware_check_info_wrapper":false},{"_00div.UICmainTabs":true},{"_00#UICGcodeVWidget":true,"_01#UICTempWidget":true,"_02#UICWebCamWidget":true,"_03#sidebar_plugin_action_command_notification_wrapper":true,"_04#state_wrapper":true}],"saveAccordions":false,"theme":"default","themeLocal":true,"themeVersion":"0.2.9.8","topIconSort":["navbar_plugin_DisplayLayerProgress","navbar_plugin_action_command_prompt","navbar_plugin_simpleemergencystop","navbar_plugin_firmwareupdater","navbar_plugin_touchui","navbar_plugin_logging_seriallog","navbar_plugin_logging_plugintimingslog"],"webcamzoomtype":"float","widths":["3","6","3"]},"virtual_printer":{"ambientTemperature":21.3,"brokenM29":true,"brokenResend":false,"busyInterval":2.0,"capabilities":{"AUTOREPORT_POS":false,"AUTOREPORT_SD_STATUS":true,"AUTOREPORT_TEMP":true,"EMERGENCY_PARSER":true,"EXTENDED_M20":false},"commandBuffer":4,"echoOnM117":true,"enable_eeprom":true,"enabled":false,"errors":{"checksum_mismatch":"Checksum mismatch","checksum_missing":"Missing checksum","command_unknown":"Unknown command {}","lineno_mismatch":"expected line {} got {}","lineno_missing":"No Line Number with checksum, Last Line: {}","maxtemp":"MAXTEMP triggered!","mintemp":"MINTEMP triggered!"},"firmwareName":"Virtual Marlin 1.0","forceChecksum":false,"hasBed":true,"hasChamber":false,"includeCurrentToolInTemps":true,"includeFilenameInOpened":true,"klipperTemperatureReporting":false,"locked":false,"m105NoTargetFormatString":"{heater}:{actual:.2f}","m105TargetFormatString":"{heater}:{actual:.2f}/ {target:.2f}","m114FormatString":"X:{x} Y:{y} Z:{z} E:{e[current]} Count: A:{a} B:{b} C:{c}","m115FormatString":"FIRMWARE_NAME:{firmware_name} PROTOCOL_VERSION:1.0","m115ReportCapabilities":true,"numExtruders":1,"okAfterResend":false,"okBeforeCommandOutput":false,"okFormatString":"ok","passcode":"1234","pinnedExtruders":null,"preparedOks":[],"repetierStyleTargetTemperature":false,"reprapfwM114":false,"resend_ratio":0,"resetLines":["start","Marlin: Virtual Marlin!","\u0080","SD card ok"],"rxBuffer":64,"sdFiles":{"longname":false,"longname_quoted":true,"size":true},"sendBusy":false,"sendWait":true,"sharedNozzle":false,"simulateReset":true,"smoothieTemperatureReporting":false,"supportF":false,"supportM112":true,"support_M503":true,"throttle":0.01,"waitInterval":1.0}},"scripts":{"gcode":{"afterPrintCancelled":"G92 E0 ; Reset Extruder\nG1 F1800 E-5 ; Retract filament 5 mm to prevent oozing\nG0Z50 ; Move Z up 50mm to assist nozzle cleaning\nM84 ; disable motors\n\n;disable all heaters\n{% snippet 'disable_hotends' %}\n{% snippet 'disable_bed' %}\n;disable fan\nM106 S0","afterPrintDone":"G4 ; Wait\nM220 S100 ; Reset Speed factor override percentage to default (100%)\nM221 S100 ; Reset Extrude factor override percentage to default (100%)\nG91 ; Set coordinates to relative\nG92 E0 ; Reset Extruder\nG1 F1800 E-5 ; Retract filament 5 mm to prevent oozing\nG1 F3000 Z20 ; Move Z Axis up 20 mm to allow filament ooze freely\nG90 ; Set coordinates to absolute\nG1 X0 Y{machine_depth} F1000 ; Move Heat Bed to the front for easy print removal\nM106 S0 ; Turn off cooling fan\nM104 S0 ; Turn off extruder\nM140 S0 ; Turn off bed\nM107 ; Turn off Fan\nM84 ; Disable stepper motors\nM117 Print done.\n\n;Music\nM300 P200 S6000\nM300 P200 S5000\nM300 P200 S4000\nM300 P200 S3000\nM300 P200 S2000\nM300 P200 S1000","afterPrintPaused":"G91 ; Set relative positioning mode\nG92 E0 ; Reset Extruder\nG1 F1800 E-5 ; Retract filament 5 mm to prevent oozing.\nG0Z100 ; Move Z up 100mm to assist nozzle cleaning\nG90 ; Set absolute positioning mode\nM117 Successfully paused.","afterPrinterConnected":"M300 P30 S1000\nM300 P30 S2000\nM300 P30 S3000\nM300 P30 S4000\nM300 P30 S5000\nM300 P30 S6000","beforePrintResumed":"G91 ; Set relative positioning mode\nG92 E0 ; Reset Extruder\nG1 F1800 E5 ; Feed filament 5 mm to prime\nG0Z-100 ; Move Z down 100mm to return to print position\nG90 ; Set absolute positioning mode\nM117 Print resumed.","beforePrintStarted":"M104 S200; Heat nozzle but don't wait.\nM140 S60; Heat bed but don't wait. \nG28 ; home\n\nM420 L0 S1 ;Recall level mesh.\nM117 Loaded bed mesh.\n\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X0.1 Y20 Z0.3 F5000.0 ; Move to start position\nM117 @ Start Position\n\nM109 S200 ; wait for nozzle temp\nM190 S60 ; wait for bed temp\n;Start chime\nM300 P200 S1000\nM300 P200 S2000\nM300 P200 S3000\nM300 P200 S4000\nM300 P200 S5000\nM300 P200 S6000\n\nG92 E0 ; Reset Extruder\nG1 F1800 E5 ; Feed filament 5 mm to prime nozzle for purge.\nM117 Drawing purge lines.\nG1 X0.1 Y200.0 Z0.3 F1500.0 E15 ; Draw the first purge line\nG1 X0.4 Y200.0 Z0.3 F5000.0 ; Move to side a little\nG1 X0.4 Y20 Z0.3 F1500.0 E30 ; Draw the second purge line\nG1 Z2.0 F3000 ; Move Z Axis up little to prevent scratching of Heat Bed\nG1 X5 Y20 Z0.3 F5000.0 ; Move over to prevent blob squish\nG0 X5 Y20 Z15 ; Raise nozzle while temp stabilizes.","beforePrinterDisconnected":"M300 P30 S6000\nM300 P30 S5000\nM300 P30 S4000\nM300 P30 S3000\nM300 P30 S2000\nM300 P30 S1000","psucontrol_post_on":"","psucontrol_pre_off":"","snippets/disable_bed":"{% if printer_profile.heatedBed %}M140 S0\n{% endif %}","snippets/disable_hotends":"{% if printer_profile.extruder.sharedNozzle %}M104 T0 S0\n{% else %}{% for tool in range(printer_profile.extruder.count) %}M104 T{{ tool }} S0\n{% endfor %}{% endif %}"}},"serial":{"abortHeatupOnCancel":true,"ackMax":1,"additionalBaudrates":[],"additionalPorts":[],"alwaysSendChecksum":false,"autoconnect":true,"baudrate":250000,"baudrateOptions":[250000,230400,115200,57600,38400,19200,9600],"blacklistedBaudrates":[],"blacklistedPorts":[],"blockWhileDwelling":false,"blockedCommands":["M0","M1"],"capAutoreportPos":true,"capAutoreportSdStatus":true,"capAutoreportTemp":true,"capBusyProtocol":true,"capEmergencyParser":true,"capExtendedM20":true,"checksumRequiringCommands":["M110"],"disableSdPrintingDetection":false,"disconnectOnErrors":true,"emergencyCommands":["M112","M108","M410"],"enableShutdownActionCommand":false,"encoding":"ascii","exclusive":true,"externalHeatupDetection":true,"firmwareDetection":false,"helloCommand":"M110 N0","ignoreEmptyPorts":false,"ignoreErrorsFromFirmware":false,"ignoreIdenticalResends":false,"ignoredCommands":[],"log":false,"logPositionOnCancel":false,"logPositionOnPause":true,"longRunningCommands":["G4","G28","G29","G30","G32","M400","M226","M600"],"lowLatency":false,"maxTimeoutsIdle":2,"maxTimeoutsLong":5,"maxTimeoutsPrinting":5,"neverSendChecksum":false,"notifySuppressedCommands":"warn","pausingCommands":["M0","M1","M25"],"port":null,"portOptions":["/dev/ttyS0","/dev/ttyS1","/dev/ttyS2","/dev/ttyS3","/dev/ttyS4","/dev/ttyS5","/dev/ttyS6","/dev/ttyS7","/dev/ttyS8","/dev/ttyS9","/dev/ttyS10","/dev/ttyS11","/dev/ttyS12","/dev/ttyS13","/dev/ttyS14","/dev/ttyS15","/dev/ttyS16","/dev/ttyS17","/dev/ttyS18","/dev/ttyS19","/dev/ttyS20","/dev/ttyS21","/dev/ttyS22","/dev/ttyS23","/dev/ttyS24","/dev/ttyS25","/dev/ttyS26","/dev/ttyS27","/dev/ttyS28","/dev/ttyS29","/dev/ttyS30","/dev/ttyS31","/dev/ttyUSB0"],"repetierTargetTemp":false,"resendRatioStart":100,"resendRatioThreshold":10,"sanityCheckTools":true,"sdAlwaysAvailable":false,"sdCancelCommand":"M25","sdLowerCase":false,"sdRelativePath":false,"sendChecksumWithUnknownCommands":false,"sendM112OnError":true,"supportResendsWithoutOk":"detect","swallowOkAfterResend":true,"timeoutBaudrateDetectionPause":1.0,"timeoutCommunication":30.0,"timeoutCommunicationBusy":3.0,"timeoutConnection":10.0,"timeoutDetectionConsecutive":2.0,"timeoutDetectionFirst":10.0,"timeoutPosAutoreport":5.0,"timeoutPositionLogWait":10.0,"timeoutSdStatus":1.0,"timeoutSdStatusAutoreport":1.0,"timeoutTemperature":5.0,"timeoutTemperatureAutoreport":2.0,"timeoutTemperatureTargetSet":2.0,"triggerOkForM29":true,"unknownCommandsNeedAck":false,"useParityWorkaround":"detect","waitForStart":false},"server":{"allowFraming":false,"commands":{"serverRestartCommand":"sudo /bin/systemctl restart octoprint.service","systemRestartCommand":"sudo shutdown -r now","systemShutdownCommand":"sudo shutdown -h now"},"diskspace":{"critical":209715200,"warning":524288000},"onlineCheck":{"enabled":true,"host":"1.1.1.1","interval":15,"name":"octoprint.org","port":53},"pluginBlacklist":{"enabled":true,"ttl":15,"url":"https://plugins.octoprint.org/blacklist.json"}},"slicing":{"defaultSlicer":null},"system":{"actions":[],"events":null},"temperature":{"cutoff":30,"profiles":[{"bed":70,"chamber":null,"extruder":240,"name":"ABS"},{"bed":60,"chamber":null,"extruder":200,"name":"PLA"}],"sendAutomatically":false,"sendAutomaticallyAfter":1},"terminalFilters":[{"name":"Suppress temperature messages","regex":"(Send: (N\\d+\\s+)?M105)|(Recv:\\s+(ok\\s+([PBN]\\d+\\s+)*)?([BCLPR]|T\\d*):-?\\d+)"},{"name":"Suppress SD status messages","regex":"(Send: (N\\d+\\s+)?M27)|(Recv: SD printing byte)|(Recv: Not SD printing)"},{"name":"Suppress position messages","regex":"(Send:\\s+(N\\d+\\s+)?M114)|(Recv:\\s+(ok\\s+)?X:[+-]?([0-9]*[.])?[0-9]+\\s+Y:[+-]?([0-9]*[.])?[0-9]+\\s+Z:[+-]?([0-9]*[.])?[0-9]+\\s+E\\d*:[+-]?([0-9]*[.])?[0-9]+).*"},{"name":"Suppress wait responses","regex":"Recv: wait"},{"name":"Suppress processing responses","regex":"Recv: (echo:\\s*)?busy:\\s*processing"}],"webcam":{"bitrate":"10000k","cacheBuster":false,"ffmpegCommandline":"{ffmpeg} -framerate {fps} -i \"{input}\" -vcodec {videocodec} -threads {threads} -b:v {bitrate} -f {containerformat} -y {filters} \"{output}\"","ffmpegPath":"/usr/bin/ffmpeg","ffmpegThreads":1,"ffmpegVideoCodec":"libx264","flipH":false,"flipV":false,"rotate90":false,"snapshotSslValidation":true,"snapshotTimeout":5,"snapshotUrl":"http://192.168.68.95:8080?action=snapshot","streamRatio":"16:9","streamTimeout":5,"streamUrl":"http://192.168.68.95:8080?action=stream","streamWebrtcIceServers":["stun:stun.l.google.com:19302"],"timelapseEnabled":true,"watermark":false,"webcamEnabled":true}}

DevDylanB commented 1 year ago

I just ended up giving the entire thing. The keyword "stream" was scattered throughout so figured I'd not skip over anything.

rfleming71 commented 1 year ago

Perfect, thanks for adding the info. The underlying lib is making a bad assumption around the stream url. Will get working on a fix for that shortly.

DevDylanB commented 1 year ago

Bug squashed, thanks for being awesome!

Lyliya commented 1 year ago

Hey, i recently ran into the same problem. My Octoprint instance is running on docker on a second server, meaning that i have to use full http string to access it http://192.168.1.31:5001/?action=stream It work fine when i access it from the web UI of octoprint, but for some reason, Home Assistant integration get the camera as inactive even though the API return the good url. (streamUrl: "http://192.168.1.31:5001/?action=stream")

TangoOversway commented 1 year ago

I'm running into the same issue. I have two instances of OctoPrint running on a Pi. To get the integration to see the 2nd instance, I had to change the UUID in /home/pi/.octoprint2/config.yaml to a unique one (it was the same as the 1st instance, from when I copied the config files). Once I did that, HA found the 2nd instance easily. I'm pretty sure it's the actual 2nd instance of OctoPrint because the first one has over 20 entities and the 2nd one has less than 15.

The webcam on the first instance works. On the 2nd instance, I can see there is a webcam, but I don't get a video stream. On my Pi, the first OctoPrint instance uses port 5000 for the main instance, also, I can use 172.16.7.21/prusa to see the first instance. The webcam is at port 5001. With haproxy, that also can be seen at 172.16.7.21/prusacam.

The 2nd instance uses port 5010 and, for the 2nd webcam, port 5011. The path haproxy uses for those is 172.16.7.21/e3p and the camera is at 172.16.7.21/e3pcam.

It looks to me like I'm dealing with the same issue here. I just updated HA today (Feb 5 2023) and just added the 2nd integration of OctoPrint today, too. (If the date on the post is different, I'm posting after midnight.) That means I'm probably on the latest versions and I think my problem is that dealing with a 2nd instance AND a 2nd webcam on the same Pi is not something that has been run into a lot with usage from HA, yet. I'm guessing there's no way, at this point, to tell the integration where to look for that 2nd webcam in that 2nd instance.

TangoOversway commented 1 year ago

@MartinHjelmare:

Closing this as completed in 88052 - does that mean if I specify a full absolute URL, then I can see the 2nd webcam?

MartinHjelmare commented 1 year ago

Sorry I don't know any Octoprint specifics. The merged PR will go out in 2023.2.5.